51dev.com IT技术开发者社区

51dev.com 技术开发者社区

webpack DllPlugin的用法

代码星球阅读(34)2020-06-29 收藏0次评论

1. 首先将需要打包的文件打包为dll

需要一个打包配置 webpack.dll.js

const webpack = require('webpack')
const path = require('path')

module.exports = {
  entry: {
    react: ['react', 'react-dom']
  },
  output: {
    library:  'react', // 以一个库的形式导出
    filename: '[name].dll.js'
  },
  plugins: [
    new webpack.DllPlugin({
      name: 'react',
      path: path.resolve(__dirname, 'dist/manifest.json')
    })
  ]
}

生成一个 react.dll.js打包文件和一个结构文件manifest.json,manifest.json用于读取打包前文件后打包后文件的对应关系,
可能会有多组文件需要打包。

打包命令

"script" : {
    "dll": "webpack --config webpack.dll.js --mode=development"
}

2. 项目中引入打包的结构文件,页面中引入打包文件

plugins: [
    new webpack.DllReferencePlugin({
      manifest: path.resolve(__dirname, 'dist/manifest.json')
    }),
    new AddAssetHtmlPlugin({ filepath: path.resolve(__dirname, 'dist/react.dll.js') })
]

3. 使用AtuoDllPlugin快速完成dll打包

上面的步骤中的打包配置略显繁琐,可以使用autodll-webpack-plugin代替上面的配置

new AutoDllPlugin({
    inject: true, // will inject the DLL bundle to index.html
    debug: true,
    filename: '[name]_[hash].js',
    context: path.join(__dirname, '..'),
    path: './dll',
    entry: {
        vendor: [ 'react','react-dom' ]
    }
})

 

以上就是webpack DllPlugin的用法的全部内容。