webpack优化配置-dll方式将第三方库独立打包

首先,我们需要使用 DllPlugin 插件将第三方库打包成一个独立的文件,然后再在项目中引入这个文件。

  1. 安装 DllPlugin 插件

    shell 复制代码
    npm install --save-dev webpack webpack-cli webpack-dev-server webpack-manifest-plugin
  2. 创建一个新的 webpack 配置文件,比如 webpack.dll.config.js,并添加以下内容:

    javascript 复制代码
    const path = require('path');
    const webpack = require('webpack');
    
    module.exports = {
      mode: 'production',
      entry: {
        vendor: ['react', 'react-dom', 'lodash'], // 第三方库的名称
      },
      output: {
        path: path.resolve(__dirname, 'dll'),
        filename: '[name].dll.js',
        library: '[name]',
      },
      plugins: [
        new webpack.DllPlugin({
          path: path.resolve(__dirname, 'dll', '[name]-manifest.json'),
          name: '[name]',
        }),
      ],
    };

    这里的 entry 字段是一个对象,键是你想要将哪些第三方库打包成独立文件,值是这些第三方库的名称。在这个例子中,我们将 reactreact-domlodash 打包成一个名为 vendor 的文件。

    output 字段配置了输出的文件路径和文件名,library 字段定义了生成的文件的变量名。

    plugins 字段使用 DllPlugin 插件,指定了生成的 manifest 文件的路径和名称。

  3. package.json 文件中添加以下脚本命令:

    json 复制代码
    "scripts": {
      "dll": "webpack --config webpack.dll.config.js"
    }
  4. 运行命令 npm run dll,会在项目根目录下生成一个 dll 文件夹,里面包含了生成的第三方库的文件和 manifest 文件。

  5. 在项目的 webpack 配置文件中,添加以下内容来引入生成的第三方库文件:

    javascript 复制代码
    const webpack = require('webpack');
    const path = require('path');
    
    module.exports = {
      // ...
      plugins: [
        new webpack.DllReferencePlugin({
          context: path.resolve(__dirname, 'src'),
          manifest: require('./dll/vendor-manifest.json'),
        }),
      ],
    };

    这里的 DllReferencePlugin 插件用于引入生成的 manifest 文件。

通过以上步骤,我们就可以使用 DllPlugin 插件将第三方库独立打包,并在项目中引入生成的文件。这样做可以提高构建速度,减少了第三方库的重新打包时间。

相关推荐
若年封尘2 分钟前
告别手写 API 类型:用 openapi-fetch 打造类型安全的前端接口层
前端·安全·openapi-fetch
cypking7 分钟前
二次封装ElementUI日期范围组件:打造带限制规则的Vue2 v-model响应式通用组件
前端·javascript·elementui
A923A8 分钟前
【小兔鲜电商前台 | 项目笔记】第二天
前端·vue.js·笔记·项目·小兔鲜
牧码岛8 分钟前
Web前端之样式中的light-dark函数,从媒体查询到颜色函数,从颜色到图片,light-dark打开CSS新时代、主题切换的暗黑模式到image的正解
前端·css·web·web前端
酉鬼女又兒22 分钟前
零基础快速入门前端蓝桥杯Web考点深度解析:var、let、const与事件绑定实战(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯·es6·html5
宁雨桥32 分钟前
前端项目实现光暗主题切换的完整方案
前端
happymaker062640 分钟前
vue指令扩展以及监视器的使用
前端·javascript·vue.js
一只小阿乐1 小时前
vue前端处理流式数据
前端·javascript·ai·大模型·全栈开发·agentai
问道飞鱼1 小时前
【技术方案】面向 Web 系统的《全栈灰度部署方案设计》
前端·全栈·灰度发布
꧁꫞꯭零꯭点꯭꫞꧂1 小时前
前端面试题3
开发语言·前端·javascript