DllPlugin 可以将特定的类库提前然后备份导入。这种方式可以极大地减少只有备份类库的次数,当类库更新版本则需要重新备份,并且也实现了将公共代码抽离成单独的文件的优化方案。
// 单独配置在一个文件中 // webpack.dll.conf.js const path = require("path"); const webpack = require("webpack"); module.exports = { entry: { // 想统一打包的类库 vendor: ["react"], }, output: { path: path.join(__dirname, "dist"), filename: "[name].dll.js", library: "[name]-[hash]", }, plugins: [ new webpack.DllPlugin({ // name 必须和 output.library 一致 name: "[name]-[hash]", // 该属性需要与 DllReferencePlugin 中一致 context: __dirname, path: path.join(__dirname, "dist", "[name]-manifest.json"), }), ], };
然后需要我们执行这个文件生成依赖文件,接下来我们需要使用 DllReferencePlugin 将配置依赖文件引入项目中
// webpack.conf.js module.exports = { // ...省略其他配置 plugins: [ new webpack.DllReferencePlugin({ context: __dirname, // manifest 就是之前打包出来的 json 文件 manifest: require("./dist/vendor-manifest.json"), }), ], };