Introduce
The keyword webpack is no longer unfamiliar to everyone, its power is clearly shown through the number of running projects or the number of stars (currently 56.8k votes on github, it’s just core. its only). When it comes to webpack, there will be 2 major components that make it powerful: its loader
and pluin
, today I would like to introduce some plugin
that are new and feel interesting, are looking to try to apply in the project .
Some plugins:
1> moment-locales-webpack-plugin:
Homepage : https://github.com/iamakulov/moment-locales-webpack-plugin
- Introduction : When we use momentjs for time-related formatting, we usually have to import some localization only. However, when using momentjs, we often get bundled with many different languages => this creates redundancy and causes heavy application on the application. This plugin was created to reduce some unnecessary localization
- Install :
npm install --save-dev moment-locales-webpack-plugin
- Use :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <span class="token comment">// webpack.config.js</span> <span class="token comment">// khai báo plugin</span> <span class="token keyword">const</span> MomentLocalesPlugin <span class="token operator">=</span> <span class="token function">require</span> <span class="token punctuation">(</span> <span class="token string">'moment-locales-webpack-plugin'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> module <span class="token punctuation">.</span> exports <span class="token operator">=</span> <span class="token punctuation">{</span> plugins <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token comment">// Nếu bạn muốn loại bỏ tất cả các ngôn ngữ khác</span> <span class="token comment">// ('en': ngôn ngữ mặc định)</span> <span class="token keyword">new</span> <span class="token class-name">MomentLocalesPlugin</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token comment">// Nếu bạn muốn giữ lại 'en', 'en-us', 'ru'</span> <span class="token comment">//('en': ngôn ngữ mặc định không thể loại bỏ)</span> <span class="token keyword">new</span> <span class="token class-name">MomentLocalesPlugin</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> localesToKeep <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'es-us'</span> <span class="token punctuation">,</span> <span class="token string">'ru'</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> |
As in the code above the usage is very simple: you import the plugin and use the localesToKeep
property to keep the languages you need. Note: English is the default language, so it cannot be removed
- Results :
You can remove moment’s unnecessary languages (about 75% of the file size of moment is due to support for different languages) Although momentjs is being replaced by other libraries (DateFns, DateJs, Luxon) , ..) but if your project is using momnent then you can try using this
2> webpack-pwa-manifest:
Homepage : https://github.com/arthurbergmz/webpack-pwa-manifest
- Introduction : When we are using the dynamically generated
manifest.json
file (used in Progressive Web Application) - Install :
npm install --save-dev webpack-pwa-manifest
- Use :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <span class="token comment">// ES6+</span> <span class="token keyword">import</span> WebpackPwaManifest <span class="token keyword">from</span> <span class="token string">'webpack-pwa-manifest'</span> <span class="token comment">// ES5</span> <span class="token keyword">var</span> WebpackPwaManifest <span class="token operator">=</span> <span class="token function">require</span> <span class="token punctuation">(</span> <span class="token string">'webpack-pwa-manifest'</span> <span class="token punctuation">)</span> plugins <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token keyword">new</span> <span class="token class-name">WebpackPwaManifest</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> <span class="token comment">// tên app</span> name <span class="token operator">:</span> <span class="token string">'My Progressive Web App'</span> <span class="token punctuation">,</span> <span class="token comment">// tên rút gọn, bạn sẽ thấy khi cài đặt hoặc khi hiển thị trên giao diện mà nó giới hạn từ </span> short_name <span class="token operator">:</span> <span class="token string">'MyPWA'</span> <span class="token punctuation">,</span> <span class="token comment">// mô tả </span> description <span class="token operator">:</span> <span class="token string">'My awesome Progressive Web App!'</span> <span class="token punctuation">,</span> <span class="token comment">// màu nền: khi laucher ứng dụng lần đầu trên UI </span> background_color <span class="token operator">:</span> <span class="token string">'#ffffff'</span> <span class="token punctuation">,</span> crossorigin <span class="token operator">:</span> <span class="token string">'use-credentials'</span> <span class="token punctuation">,</span> <span class="token comment">//can be null, use-credentials or anonymous</span> <span class="token comment">// list icon </span> icons <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> src <span class="token operator">:</span> path <span class="token punctuation">.</span> <span class="token function">resolve</span> <span class="token punctuation">(</span> <span class="token string">'src/assets/icon.png'</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> sizes <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token number">96</span> <span class="token punctuation">,</span> <span class="token number">128</span> <span class="token punctuation">,</span> <span class="token number">192</span> <span class="token punctuation">,</span> <span class="token number">256</span> <span class="token punctuation">,</span> <span class="token number">384</span> <span class="token punctuation">,</span> <span class="token number">512</span> <span class="token punctuation">]</span> <span class="token comment">// multiple sizes</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> src <span class="token operator">:</span> path <span class="token punctuation">.</span> <span class="token function">resolve</span> <span class="token punctuation">(</span> <span class="token string">'src/assets/large-icon.png'</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> size <span class="token operator">:</span> <span class="token string">'1024x1024'</span> <span class="token comment">// you can also use the specifications pattern</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> src <span class="token operator">:</span> path <span class="token punctuation">.</span> <span class="token function">resolve</span> <span class="token punctuation">(</span> <span class="token string">'src/assets/maskable-icon.png'</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> size <span class="token operator">:</span> <span class="token string">'1024x1024'</span> <span class="token punctuation">,</span> purpose <span class="token operator">:</span> <span class="token string">'maskable'</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token string">"start_url"</span> <span class="token operator">:</span> <span class="token string">"."</span> <span class="token punctuation">,</span> <span class="token string">"display"</span> <span class="token operator">:</span> <span class="token string">"standalone"</span> <span class="token punctuation">,</span> <span class="token string">"scope"</span> <span class="token operator">:</span> <span class="token string">"/"</span> <span class="token punctuation">,</span> <span class="token string">"theme_color"</span> <span class="token operator">:</span> <span class="token string">"#3367D6"</span> <span class="token punctuation">,</span> <span class="token string">"shortcuts"</span> <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token string">"name"</span> <span class="token operator">:</span> shortcut" <span class="token punctuation">,</span> <span class="token string">"short_name"</span> <span class="token operator">:</span> <span class="token string">"tên shortcut"</span> <span class="token punctuation">,</span> <span class="token string">"description"</span> <span class="token operator">:</span> <span class="token string">"mô tả"</span> <span class="token punctuation">,</span> <span class="token string">"url"</span> <span class="token operator">:</span> <span class="token string">"/"</span> <span class="token punctuation">,</span> <span class="token string">"icons"</span> <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"/images/icon.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"192x192"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token operator">...</span> <span class="token punctuation">.</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">]</span> |
- Result We generate a
manifest.json
file that is automatically generated and injected, with support for icon resizing and fingerprinting.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | <span class="token punctuation">{</span> <span class="token string">"name"</span> <span class="token operator">:</span> <span class="token string">"My Progressive Web App"</span> <span class="token punctuation">,</span> <span class="token string">"orientation"</span> <span class="token operator">:</span> <span class="token string">"portrait"</span> <span class="token punctuation">,</span> <span class="token string">"display"</span> <span class="token operator">:</span> <span class="token string">"standalone"</span> <span class="token punctuation">,</span> <span class="token string">"start_url"</span> <span class="token operator">:</span> <span class="token string">"."</span> <span class="token punctuation">,</span> <span class="token string">"short_name"</span> <span class="token operator">:</span> <span class="token string">"MyPWA"</span> <span class="token punctuation">,</span> <span class="token string">"description"</span> <span class="token operator">:</span> <span class="token string">"My awesome Progressive Web App!"</span> <span class="token punctuation">,</span> <span class="token string">"background_color"</span> <span class="token operator">:</span> <span class="token string">"#ffffff"</span> <span class="token punctuation">,</span> <span class="token string">"icons"</span> <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"icon_1024x1024.<fingerprint>.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"1024x1024"</span> <span class="token punctuation">,</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"image/png"</span> <span class="token punctuation">,</span> <span class="token string">"purpose"</span> <span class="token operator">:</span> <span class="token string">"maskable"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"icon_1024x1024.<fingerprint>.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"1024x1024"</span> <span class="token punctuation">,</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"image/png"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"icon_512x512.<fingerprint>.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"512x512"</span> <span class="token punctuation">,</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"image/png"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"icon_384x384.<fingerprint>.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"384x384"</span> <span class="token punctuation">,</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"image/png"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"icon_256x256.<fingerprint>.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"256x256"</span> <span class="token punctuation">,</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"image/png"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"icon_192x192.<fingerprint>.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"192x192"</span> <span class="token punctuation">,</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"image/png"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"icon_128x128.<fingerprint>.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"128x128"</span> <span class="token punctuation">,</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"image/png"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"icon_96x96.<fingerprint>.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"96x96"</span> <span class="token punctuation">,</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"image/png"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token string">"theme_color"</span> <span class="token operator">:</span> <span class="token string">"#3367D6"</span> <span class="token punctuation">,</span> <span class="token string">"shortcuts"</span> <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token string">"name"</span> <span class="token operator">:</span> shortcut" <span class="token punctuation">,</span> <span class="token string">"short_name"</span> <span class="token operator">:</span> <span class="token string">"tên shortcut"</span> <span class="token punctuation">,</span> <span class="token string">"description"</span> <span class="token operator">:</span> <span class="token string">"mô tả"</span> <span class="token punctuation">,</span> <span class="token string">"url"</span> <span class="token operator">:</span> <span class="token string">"/"</span> <span class="token punctuation">,</span> <span class="token string">"icons"</span> <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token string">"src"</span> <span class="token operator">:</span> <span class="token string">"/images/icon.png"</span> <span class="token punctuation">,</span> <span class="token string">"sizes"</span> <span class="token operator">:</span> <span class="token string">"192x192"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token operator">...</span> <span class="token punctuation">.</span> <span class="token punctuation">.</span> <span class="token punctuation">}</span> |
3> filemanager-webpack-plugin:
** Homepage **: https://github.com/gregnb/filemanager-webpack-plugin Introduction Its name says it all, it is a file manager plugin that allows you to copy, compress (zip, tar, tar.gz), move or delete files and folders before or after the build (I recommend for you to try a plugin that synthesizes what you need, if you need a similar function you can use copy-webpack-plugin
or remove-files-webpack-plugin
, …)
- Install :
1 2 | npm install filemanager-webpack-plugin --save-dev |
- Use :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <span class="token comment">// webpack.config.js:</span> <span class="token keyword">const</span> FileManagerPlugin <span class="token operator">=</span> <span class="token function">require</span> <span class="token punctuation">(</span> <span class="token string">'filemanager-webpack-plugin'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> module <span class="token punctuation">.</span> exports <span class="token operator">=</span> <span class="token punctuation">{</span> plugins <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token keyword">new</span> <span class="token class-name">FileManagerPlugin</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> <span class="token comment">// bạn khai báo event tương ứng: onEned hoặc onStart</span> events <span class="token operator">:</span> <span class="token punctuation">{</span> onEnd <span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token comment">// các option có thể khai báo là copy, move, delete, Mkdir hoặc Archive</span> copy <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/fromfile.txt'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path/tofile.txt'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/**/*.js'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> move <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/from'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path/to'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/fromfile.txt'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path/tofile.txt'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token keyword">delete</span> <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'/path/to/file.txt'</span> <span class="token punctuation">,</span> <span class="token string">'/path/to/directory/'</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> mkdir <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'/path/to/directory/'</span> <span class="token punctuation">,</span> <span class="token string">'/another/directory/'</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> archive <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/from'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path/to.zip'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/**/*.js'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path/to.zip'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/fromfile.txt'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path/to.zip'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/fromfile.txt'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path/to.zip'</span> <span class="token punctuation">,</span> format <span class="token operator">:</span> <span class="token string">'tar'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> source <span class="token operator">:</span> <span class="token string">'/path/fromfile.txt'</span> <span class="token punctuation">,</span> destination <span class="token operator">:</span> <span class="token string">'/path/to.tar.gz'</span> <span class="token punctuation">,</span> format <span class="token operator">:</span> <span class="token string">'tar'</span> <span class="token punctuation">,</span> options <span class="token operator">:</span> <span class="token punctuation">{</span> gzip <span class="token operator">:</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> gzipOptions <span class="token operator">:</span> <span class="token punctuation">{</span> level <span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> globOptions <span class="token operator">:</span> <span class="token punctuation">{</span> nomount <span class="token operator">:</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> |
4> webpack-build-notifier:
Homepage : https://github.com/roccoc/webpack-build-notifier
- Introduction : Every time you build with webpack, you want when you succeed or fail, there will be a small notice for you to observe and correct mistakes if there is an error, this is the plugin you need.
(image without plugin configured)
- Install :
1 2 | npm install webpack-build-notifier --save-dev |
- Use :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <span class="token comment">// webpack.config.js</span> <span class="token keyword">const</span> WebpackBuildNotifierPlugin <span class="token operator">=</span> <span class="token function">require</span> <span class="token punctuation">(</span> <span class="token string">'webpack-build-notifier'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> module <span class="token punctuation">.</span> exports <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token comment">// ...</span> plugins <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token keyword">new</span> <span class="token class-name">WebpackBuildNotifierPlugin</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> <span class="token comment">// tiêu đều mà bạn muốn hiển thị</span> title <span class="token operator">:</span> <span class="token string">"My Webpack Project"</span> <span class="token punctuation">,</span> <span class="token comment">// logo, nếu ko có sẽ sử dụng hình ảnh mặc định của webpack</span> logo <span class="token operator">:</span> path <span class="token punctuation">.</span> <span class="token function">resolve</span> <span class="token punctuation">(</span> <span class="token string">"./img/favicon.png"</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token comment">// cách hiển thị thông báo, nhận giá trị:</span> <span class="token comment">// - false: show ra notification mỗi khi build/</span> <span class="token comment">// - true : bạn chỉ muốn show khi thất bại hoặc lần đầu thành công</span> <span class="token comment">// - always: đừng show ra build thành công, chỉ quan tâm build thất bại</span> <span class="token comment">// - initial: giống khi thành công, !! mình chưa hiểu khác gì so với nó</span> suppressSuccess <span class="token operator">:</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> <span class="token comment">// don't spam success notifications</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> |
Additionally, you can further configure the display time with showDuration
, or successIcon
warningIcon
failureIcon
compileIcon
successIcon
warningIcon
failureIcon
compileIcon
, sounds, or other events.
- Result: Build success or failure with gentle notification and sound
It is contraindicated to use the plugin for anyone who does not like to read [email protected] @
5> Some other plugins you can try to find out:
- prerender-spa-plugin: https://github.com/chrisvfritz/prerender-spa-plugin
- serverless-webpack: https://github.com/serverless-heaven/serverless-webpack
- Friendly-errors-webpack-plugin: https://github.com/geowarin/friendly-errors-webpack-plugin
- dynamic-cdn-webpack-plugin: https://github.com/mastilver/dynamic-cdn-webpack-plugin
Conclude:
Through my introduction, hope you can be more interested in webpack and apply a certain one I have introduced.
Thank you for reading through my article.
Reference: https://webpack.js.org/