使用dllPlugin优化webpack打包速度

1,580 阅读1分钟

dllPlugin使用场景

  • 由于多人开发项目,引入的第三方库特别多,导致项目过于臃肿,而第三方库不经常变更,所以需要dllPlugin生成dll文件保证在运行时,不需要反复打包

测速工具

  • 建议使用speed-measure-webpack-plugin 进行测速

dllPlugin

const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");
const smp = new SpeedMeasurePlugin();

configureWebpack: smp.wrap({
  plugins: [
    new DllReferencePlugin({
        manifest: require('./dist/vue-manifest.json'),
      }),
      new DllReferencePlugin({
        manifest: require('./dist/ui-manifest.json'),
      }),
  ]
}),

步骤一

在项目根目录新建webpack.dll.config.js

  以下仅为缩略版,自行百度,此处仅提注意事项
   1.entry入口的 参数 需为第三方库,而不是sass-loader这种在node环境下转换器
  entry: {
    vue: ['vuex', 'vue-router', 'axios'],
    ui: ['element-ui'],
  },
  2. output出口 需要与打包出口一致,如vue-cli默认是dist目录,为了美观我单独多一个dll目录存放
  output: {
    filename: '[name].dll.js',
    path: path.resolve('dist/dll'),
    library: '[name]_dll_[fullhash]'
  },
  3. 此处需生成dllPlugin文件
  plugins: [
    new webpack.DllPlugin({
      path: path.join(__dirname, 'dist', '[name]-manifest.json'),
      name: '[name]_library'
    })
  ]
  

步骤二

自动生成dll文件

scripts:{
	"dll":"webpack --config webpack.dll.config.js"
}

步骤三

在pulic文件引入,或者使用html-webpack-plugin 引入,我这边为了偷懒就直接引入了

配合多进程的happyPack

happyPack

  • happyPack是利用多进程去提高node能力,用到os模块,但是随着webpack4,webpack5的推出,已经默认使用多进程去解析代码,所以我觉得 也快推出历史舞台了

  • 下次有机会我也玩玩thread-loader ,持续学习中, 说实话dllPlugin真的香