原文:Boost Your Productivity With These 6 Awesome webpack Pluginsjavascript
webpack plugins能夠被用來作一些諸如打包代碼優化,資源管理,環境變量注入等一系列有用的工做。 本文將會爲你們介紹6個超有用的webpack插件。前端
這個插件會將webpack的輸出文件進行可視化展現,展現的樹形結構能夠進行放大縮小等一系列交互操做。 java
這個插件能夠幫你作如下事情:webpack
# NPM
npm install --save-dev webpack-bundle-analyzer
# Yarn
yarn add -D webpack-bundle-analyzer
複製代碼
在你的webpack配置中使用該插件:git
const BundleAnalyzerPlugin = require('webpack-bundle analyzer');
module.exports = {
plugins: [
new BundleAnalyzerPlugin()
]
}
複製代碼
offline-plugin
能夠用來爲你的項目提供離線(offline)的用戶體驗。github
這個插件的底層技術支撐是ServiceWorker
和AppCache
。用法就是把這個插件加到你的webpack 配置文件中而且把一段運行時代碼放到你的項目中,這樣你打包出來的項目代碼會被瀏覽器緩存來達到離線體驗的效果。web
npm install offline-plugin [--save-dev]
複製代碼
首先在webpack.config中加入這個插件:typescript
// webpack.config.js example
var OfflinePlugin = require('offline-plugin');
module.exports = {
// ...
plugins: [
// ... other plugins
// it's always better if OfflinePlugin is the last plugin added
new OfflinePlugin()
]
// ...
}
複製代碼
而後將如下運行時代碼放到你的入口文件(通常是主入口文件):shell
require('offline-plugin/runtime').install();
複製代碼
import * as OfflinePluginRuntime from 'offline-plugin/runtime';
OfflinePluginRuntime.install();
複製代碼
關於TypeScript的更多使用細節,請參考這裏。npm
webpack-pwa-manifest
是這樣描述本身的:」Progressive Web App Manifest Generator for Webpack, with auto icon resizing and fingerprinting support.「
webpack-pwa-manifest
能夠爲你的PWA應用生成manifest.json
文件。
若是你有在configuration裏面使用注入的功能
,必定要確認HtmlWebpackPlugin
在plugins
這個數組中放在WebpackPwaManifest
這個插件前面。
npm install --save-dev webpack-pwa-manifest
複製代碼
import WebpackPwaManifest from 'webpack-pwa-manifest'
...
plugins: [
new WebpackPwaManifest({
name: 'My Progressive Web App',
short_name: 'MyPWA',
description: 'My awesome Progressive Web App!',
background_color: '#ffffff',
crossorigin: 'use-credentials', //can be null, use-credentials or anonymous
icons: [
{
src: path.resolve('src/assets/icon.png'),
sizes: [96, 128, 192, 256, 384, 512] // multiple sizes
},
{
src: path.resolve('src/assets/large-icon.png'),
size: '1024x1024' // you can also use the specifications pattern
}
]
})
]
複製代碼
imagemin-webpack-plugin
是一個使用imagemin進行圖片壓縮的插件。
npm install imagemin-webpack-plugin
複製代碼
import ImageminPlugin from 'imagemin-webpack-plugin'
module.exports = {
plugins: [
// Make sure that the plugin is after any plugins that add images
new ImageminPlugin({
disable: process.env.NODE_ENV !== 'production', // Disable during development
pngquant: {
quality: '95-100'
}
})
]
}
複製代碼
prerender-spa-plugin
將單頁應用預渲染(prerender)爲靜態HTML文檔。
這個插件的目標是爲任何使用webpack進行構建的網站進行一個簡單易擴展的,可用的預渲染解決方案。
最近服務端渲染(SSR)卷席了JavaScript的前端世界。在將你的代碼發送到客戶端瀏覽器以前在服務端進行渲染無疑是一個頗有革命性的主意。
然而,JavaScript的服務端渲染站點其實和PHP,ASP,JSP這些站點具備同樣的問題,就是它們都很慢,容易崩,並且很難實現。
雖然可能有人會告訴你不須要用到服務端渲染,你卻能夠經過預渲染(prerendering)來得到服務端渲染全部的好處而沒有它的壞處。預渲染本質上是在打包的時候啓動一個無頭瀏覽器,記錄路由而後將渲染的結構存儲到靜態的HTML文件中。你可使用你如今用到的任何靜態文件服務解決方案。它自己就支持HTML5導航之類的東西,你無需在你的業務代碼中添加和服務端渲染相關的內容。
yarn add -D prerender-spa-plugin
複製代碼
const path = require('path')
const PrerenderSPAPlugin = require('prerender-spa-plugin')
module.exports = {
plugins: [
...
new PrerenderSPAPlugin({
// Required - The path to the webpack-outputted app to prerender.
staticDir: path.join(__dirname, 'dist'),
// Required - Routes to render.
routes: [ '/', '/about', '/some/deep/nested/route' ],
})
]
}
複製代碼
這個插件會在你引進重複依賴的時候給你警告。
這種狀況是有可能的,由於你用到的依賴可能使用了不一樣版本相同的庫作爲dependency。若是這種狀況發生了,webpack通常是不會給你警告的,但是這些重複的依賴可能會引起一些很難被發現的bugs。
若是你的代碼裏面有重複的包,這個插件會給你警告進而避免打包的包體積過大或者產生bug。
緣由:github.com/webpack/web…和github.com/webpack/web…
npm install duplicate-package-checker-webpack-plugin --save-dev
複製代碼
在webpack的配置文件裏面加入該插件
const DuplicatePackageCheckerPlugin = require("duplicate-package-checker-webpack-plugin");
module.exports = {
plugins: [new DuplicatePackageCheckerPlugin()]
};
複製代碼
我是進擊的大蔥,關注我和我一塊兒進步成獨當一面的全棧工程師!
關注個人我的公衆號獲取個人最新技術推送!