在src文件夹下新建webpack.dll.js

    1. /*
    2. 使用dll技术,对某些库(第三方库:jquery、react、vue...)进行单独打包
    3. 当你运行 webpack 时,默认查找 webpack.config.js 配置文件
    4. 需求:需要运行 webpack.dll.js 文件
    5. --> webpack --config webpack.dll.js
    6. */
    7. const { resolve } = require('path');
    8. const webpack = require('webpack');
    9. module.exports = {
    10. entry: {
    11. // 最终打包生成的[name] --> jquery
    12. // ['jquery'] --> 要打包的库是jquery
    13. jquery: ['jquery'],
    14. },
    15. output: {
    16. filename: '[name].js',
    17. path: resolve(__dirname, 'dll'),
    18. library: '[name]_[hash]' // 打包的库里面向外暴露出去的内容叫什么名字
    19. },
    20. plugins: [
    21. // 打包生成一个 manifest.json --> 提供和jquery映射
    22. new webpack.DllPlugin({
    23. name: '[name]_[hash]', // 映射库的暴露的内容名称
    24. path: resolve(__dirname, 'dll/manifest.json') // 输出文件路径
    25. })
    26. ],
    27. mode: 'production'
    28. };
    运行
    webpack --config webpack.dill.js
    

    在webpack.config.js中

    const { resolve } = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const webpack = require('webpack');
    const AddAssetHtmlWebpackPlugin = require('add-asset-html-webpack-plugin');
    
    module.exports = {
      entry: './src/js/index.js',
      output: {
        filename: 'built.js',
        path: resolve(__dirname, 'build')
      },
      plugins: [
        new HtmlWebpackPlugin({
          template: './src/index.html'
        }),
        // 告诉webpack哪些库不参与打包,同时使用时的名称也得变~
        new webpack.DllReferencePlugin({
          manifest: resolve(__dirname, 'dll/manifest.json')
        }),
        // 将某个文件打包输出去,并在html中自动引入该资源
        new AddAssetHtmlWebpackPlugin({
          filepath: resolve(__dirname, 'dll/jquery.js')
        })
      ],
      mode: 'production'
    };
    

    下载

    npm i add-asset-html-webpack-plugin -D
    

    image.png
    image.png