webpack文檔中寫到:html
DLLPlugin 和 DLLReferencePlugin 用某種方法實現了拆分 bundles,同時還大大提高了構建的速度。
首先build文件夾添加----webpack.dll.config.js:vue
var path = require("path"); var webpack = require("webpack"); module.exports = { // 要打包的模塊的數組 entry: { vendor: ['vue/dist/vue.esm.js','vue-router'] }, output: { path: path.join(__dirname, '../static/js'), // 打包後文件輸出的位置 filename: '[name].dll.js',// vendor.dll.js中暴露出的全局變量名。 library: '[name]_library' // 與webpack.DllPlugin中的`name: '[name]_library',`保持一致。 }, plugins: [ new webpack.DllPlugin({ path: path.join(__dirname, '.', '[name]-manifest.json'), name: '[name]_library', context: __dirname }), ] };
在package.json的scripts里加上:webpack
"dll": "webpack --config build/webpack.dll.config.js",
運行npm run dll 在static/js下生成vendor-manifest.json;
在build/webpack.base.conf.js里加上:web
// 添加DllReferencePlugin插件 plugins: [ new webpack.DllReferencePlugin({ context: __dirname, manifest: require('./vendor-manifest.json') }) ],
而後在index.html中引入vendor.dll.js:vue-router
<div id="app"></div> <script src="./static/js/vendor.dll.js"></script>
看下效果,配置以前:npm
配置以後的:
json
能夠看到npm run build後的時間大幅度減小,在dist打包體積上也有以前的543kb——到如今的377kb。在項目優化中,能夠很大程度上加快項目的構建速度和減小項目的打包體積。數組
參考文檔:https://doc.webpack-china.org...
參考好文:Webpack 打包優化之體積篇app