學習之路基於webpack3.10.0,webpack4.0以後更新。javascript
多頁面提取公共代碼!!!java
一:文件關係node
pageA --> subA、subB --> moduleAwebpack
pageB --> subA、subB --> moduleAweb
那麼pageA、pageB 的公共代碼就是subA、subB 、moduleA。學習
二:webpack.config.js文件配置ui
var webpack = require('webpack') var path = require('path'); module.exports = { entry:{ "pageA":'./src/pageA.js', "pageB":'./src/pageB.js', 'vendor':['lodash']//第三方插件 }, output:{ path:path.resolve(__dirname,'./dist'), filename:'[name].bundle.js', chunkFilename:'[name].chunk.js' }, plugins:[ new webpack.optimize.CommonsChunkPlugin({//打包業務邏輯上面的公共代碼 name:'common', minChunks:2, chunks:['pageA','pageB'] }), new webpack.optimize.CommonsChunkPlugin({//打包第三方插件lodash的代碼 name:'vendor', minChunks:Infinity }), new webpack.optimize.CommonsChunkPlugin({//打包webpack代碼 name:'manifest', minChunks:Infinity }) ] }
打包公共代碼只適合多頁面應用。spa
三:webpack4中的打包公共代碼插件
webpack4已經移除了commonchunkPlugin,直接在配置裏面寫便可。blog
const webpack = require("webpack"); const path = require("path"); module.exports = { mode:'development', // 多頁面應用 entry: { pageA: "./src/pageA.js", pageB: "./src/pageB.js" }, output: { path: path.resolve(__dirname, "dist"), filename: "[name].bundle.js", chunkFilename: "[name].chunk.js" }, optimization: { splitChunks: { cacheGroups: { // 注意: priority屬性 // 其次: 打包業務中公共代碼 common: { name: "common", chunks: "all", minSize: 1, priority: 0//優先級 }, // 首先: 打包node_modules中的文件 vendor: { name: "vendor", test: /[\\/]node_modules[\\/]/, chunks: "all", priority: 10 } } } } };