<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Keng Hong</title>
    <description>The latest articles on DEV Community by Keng Hong (@kengste).</description>
    <link>https://dev.to/kengste</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F77742%2F60e3ed60-7d61-40bf-8218-fa89e4d8858d.png</url>
      <title>DEV Community: Keng Hong</title>
      <link>https://dev.to/kengste</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kengste"/>
    <language>en</language>
    <item>
      <title>Installing Realtek 802.11ac driver for Kali Linux</title>
      <dc:creator>Keng Hong</dc:creator>
      <pubDate>Sat, 08 Aug 2020 08:36:32 +0000</pubDate>
      <link>https://dev.to/kengste/installing-realtek-802-11ac-driver-for-kali-linux-4b1c</link>
      <guid>https://dev.to/kengste/installing-realtek-802-11ac-driver-for-kali-linux-4b1c</guid>
      <description>&lt;p&gt;This is a short snippet of code on the installation of Realtek 802.11ac driver for Kali Linux.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt update
apt install bc -y
git clone https://github.com/cilynx/rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959.git
cd rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959
VER=$(sed -n 's/\PACKAGE_VERSION="\(.*\)"/\1/p' dkms.conf)
sudo rsync -rvhP ./ /usr/src/rtl88x2bu-${VER}
sudo dkms add -m rtl88x2bu -v ${VER}
sudo dkms build -m rtl88x2bu -v ${VER}
sudo dkms install -m rtl88x2bu -v ${VER}
sudo modprobe 88x2bu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>linux</category>
    </item>
    <item>
      <title>How to maximise browser compatibility for rel value "preload"</title>
      <dc:creator>Keng Hong</dc:creator>
      <pubDate>Tue, 04 Aug 2020 16:57:36 +0000</pubDate>
      <link>https://dev.to/kengste/how-to-maximise-browser-compatibility-for-link-rel-preload-3h4</link>
      <guid>https://dev.to/kengste/how-to-maximise-browser-compatibility-for-link-rel-preload-3h4</guid>
      <description>&lt;p&gt;When using Google Lighthouse to optimise the web performance, a common recommendation by Lighthouse would be to &lt;code&gt;preload key requests&lt;/code&gt; by using &lt;code&gt;&amp;lt;link rel="preload"&amp;gt;&lt;/code&gt;. However, the rel value &lt;code&gt;preload&lt;/code&gt; is not supported by some major browsers like Firefox.&lt;/p&gt;

&lt;p&gt;To maximise the use of rel value &lt;code&gt;preload&lt;/code&gt; for most major browsers and to provide a fallback method at the same time, the most commonly adopted approach seems to be to use both the default rel value and the rel value &lt;code&gt;preload&lt;/code&gt; together. For instance, in loading css stylesheets, we can do something like &lt;code&gt;&amp;lt;link rel="preload stylesheet"&amp;gt;&lt;/code&gt;. This way, browsers that support preloading would preload as intended and browsers that do not would load the stylesheets the regular way. Further, only 1 request would be sent for the stylesheets when the page loads.&lt;/p&gt;

&lt;p&gt;Credits to &lt;a href="https://stackoverflow.com/questions/45321043/preload-css-file-not-supported-on-firefox-and-safari-mac"&gt;Stack Overflow&lt;/a&gt; for the nifty workaround!&lt;/p&gt;

</description>
      <category>lighthouse</category>
      <category>preloading</category>
      <category>firefox</category>
    </item>
    <item>
      <title>Observables - Cold, Hot or Warm?</title>
      <dc:creator>Keng Hong</dc:creator>
      <pubDate>Sun, 12 Jul 2020 14:34:53 +0000</pubDate>
      <link>https://dev.to/kengste/observables-cold-hot-or-warm-4gf1</link>
      <guid>https://dev.to/kengste/observables-cold-hot-or-warm-4gf1</guid>
      <description>&lt;p&gt;The world of observables can be intimidating for beginners. At least it was for me. It certainly took me a while to grasp the difference between cold, hot and warm observables and I would like to share the simple example that lit the light bulb in my head.&lt;/p&gt;

&lt;p&gt;Observables are cold by default. In a cold observable, the data producer is created when the observable has a new subscription. Hence in the example below, both subscribers have independent sets of values (1, 2, 3) emitted from the producer. Using the analogy of show streaming, a new subscriber would have to watch the show from the start irregardless if the show was live.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BHACS5hQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/93rm3dmith6bl5bpl48x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BHACS5hQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/93rm3dmith6bl5bpl48x.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However if we want to emulate the live streaming behaviour of a show, we need to use a hot observable instead. This can be achieved using &lt;code&gt;publish()&lt;/code&gt; and &lt;code&gt;connect()&lt;/code&gt;. As seen in the example below, only the value &lt;code&gt;2&lt;/code&gt; is logged for the second subscriber since the subscription is initialised only after approximately 2 seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Um_Jvpqw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/acdgql6rhg64l6cbrr7n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Um_Jvpqw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/acdgql6rhg64l6cbrr7n.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, as mentioned in this &lt;a href="https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339"&gt;article&lt;/a&gt;, there is a third form of observables known as warm observables. The key difference between a hot and warm observable is that in a warm observable, the data producer only starts emitting values when the first subscription is initialised on the observable. Going back to the live streaming analogy, it means the show only starts when the first subscriber arrives. The &lt;code&gt;publish()&lt;/code&gt; and &lt;code&gt;refCount()&lt;/code&gt; operators can be used to create a warm observable. As illustrated below, the value &lt;code&gt;0&lt;/code&gt; is logged for the first subscriber even though it is initialised after 1 second.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z3C4UEw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/oe4xo0ck9ev3g2dd8322.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z3C4UEw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/oe4xo0ck9ev3g2dd8322.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope these would be useful for anyone getting their feet wet with observables in RxJS!&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Readings&lt;/u&gt;&lt;br&gt;
&lt;a href="https://softchris.github.io/books/rxjs/hot-n-cold-observables/"&gt;https://softchris.github.io/books/rxjs/hot-n-cold-observables/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rxjs</category>
      <category>observables</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>REMs and pixels - enjoy the best of both worlds</title>
      <dc:creator>Keng Hong</dc:creator>
      <pubDate>Sun, 14 Jun 2020 14:38:41 +0000</pubDate>
      <link>https://dev.to/kengste/rems-and-pixels-enjoy-the-best-of-both-worlds-oil</link>
      <guid>https://dev.to/kengste/rems-and-pixels-enjoy-the-best-of-both-worlds-oil</guid>
      <description>&lt;p&gt;In the frontend teams I have worked in, it is not uncommon for team members to be debating over the use of REMs versus pixels(px) as units of measurement in our CSS.&lt;/p&gt;

&lt;p&gt;TL;DR:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REMs allow for font-sizes across the application to scale according to the user's default browser setting&lt;/li&gt;
&lt;li&gt;However, mockups from designers are typically delivered in pixels and we as developers are accustomed to pixels.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Turns out there is actually an easy solution to this debacle. We can use a PostCSS plugin to convert pixels to REMs in our application build files. Here is an example of how it can be done.&lt;/p&gt;

&lt;p&gt;First, we need to set up a starter project with &lt;a href="https://webpack.js.org/guides/getting-started/"&gt;webpack&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;starter
&lt;span class="nb"&gt;cd &lt;/span&gt;starter
npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
npm &lt;span class="nb"&gt;install &lt;/span&gt;webpack webpack-cli &lt;span class="nt"&gt;--save-dev&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;src
&lt;span class="nb"&gt;touch &lt;/span&gt;src/index.js src/style.css webpack.config.js postcss.config.js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Your file structure should look like this at this point.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;starter
│───src
│   │───index.js
│   └───style.css
│
│───node_modules       
│───package-lock.json   
│───package.json
│───webpack.config.js 
└───postcss.config.js 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Let's add some trival JS and CSS codes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** src/index.js **/&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./style.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;component&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;HELLO!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;component&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/** src/style.css **/&lt;/span&gt;
&lt;span class="nc"&gt;.hello&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now let's add the relevant dev dependancies. We would go into detail what each dependancy does below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; css-loader style-loader postcss-loader postcss-pxtorem
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://webpack.js.org/loaders/css-loader/"&gt;css-loader&lt;/a&gt; The css-loader interprets &lt;code&gt;@import&lt;/code&gt; and &lt;code&gt;url()&lt;/code&gt; like &lt;code&gt;import/require()&lt;/code&gt; and will resolve them.&lt;br&gt;
&lt;a href="https://webpack.js.org/loaders/style-loader/"&gt;style-loader&lt;/a&gt; Inject CSS into the DOM.&lt;br&gt;
&lt;a href="https://webpack.js.org/loaders/postcss-loader/"&gt;postcss-loader&lt;/a&gt; Loader for webpack to process CSS with PostCSS&lt;br&gt;
&lt;a href="https://github.com/cuth/postcss-pxtorem/"&gt;postcss-pxtorem&lt;/a&gt; A plugin for PostCSS that generates rem units from pixel units.&lt;/p&gt;

&lt;p&gt;We need to update both &lt;code&gt;webpack.config.js&lt;/code&gt; and &lt;code&gt;postcss.config.js&lt;/code&gt; respectively too.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** webpack.config.js **/&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./src/index.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bundle.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dist&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;module&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;test&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="sr"&gt;css$/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;use&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;style-loader&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;css-loader&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;postcss-loader&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** postcss.config.js **/&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;postcss-pxtorem&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Finally, update &lt;code&gt;package.json&lt;/code&gt; to add script to build using webpack.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** package.json **/&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scripts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;build&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webpack&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;npm run build&lt;/code&gt; and you should see a build file &lt;code&gt;dist/bundle.js&lt;/code&gt;. If you were to inspect &lt;code&gt;dist/bundle.js&lt;/code&gt;, you would see all pixels notations have been converted to REMs. And there you have it, the debate of pixels versus REMs addressed.&lt;/p&gt;

&lt;p&gt;The demo source code can be found &lt;a href="https://github.com/kengste/starter"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>css</category>
      <category>webpack</category>
      <category>css3</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
