详解Webpack DLL用法以及功能

发布时间 - 2026-01-11 02:17:34    点击率:

在使用webpack过程中,本人也发现发现构建速度非常慢,Webpack性能优化的方式有很多种,本文介绍了dll,dll是一种最简单粗暴并且极其有效的优化方式。

前言

在用 Webpack 打包的时候,对于一些不经常更新的第三方库,比如 reactlodash,我们希望能和自己的代码分离开,Webpack 社区有两种方案

  1. CommonsChunkPlugin
  2. DLLPlugin

对于 CommonsChunkPlugin,webpack 每次打包实际还是需要去处理这些第三方库,只是打包完之后,能把第三方库和我们自己的代码分开。而DLLPlugin 则是能把第三方代码完全分离开,即每次只打包项目自身的代码。

用法

要使用 DLLPlugin,需要额外新建一个配置文件。所以对于用这种方式打包的项目,一般会有下面两个配置文件

  1. webpack.config.js
  2. webpack.dll.config.js

先来看下 webpack.dll.config.js

const webpack = require('webpack')
const library = '[name]_lib'
const path = require('path')

module.exports = {
 entry: {
  vendors: ['react', 'lodash']
 },

 output: {
  filename: '[name].dll.js',
  path: 'dist/',
  library
 },

 plugins: [
  new webpack.DllPlugin({
   path: path.join(__dirname, 'dist/[name]-manifest.json'),
   // This must match the output.library option above
   name: library
  }),
 ],
}

再改下 webpack.config.js 文件

const webpack = require('webpack')

module.exports = {
 entry: {
  app: './src/index'
 },
 output: {
  filename: 'app.bundle.js',
  path: 'dist/',
 },
 plugins: [
  new webpack.DllReferencePlugin({
   context: __dirname,
   manifest: require('./dist/vendors-manifest.json')
  })
 ]
}

manifest: require('./dist/vendors-manifest.json') 这里的路径要和 webpack.dll.config.js 里面的对应。

然后运行

$ webpack --config webpack.dll.config.js
$ webpack --config webpack.config.js

然后你的 html 文件像下面这样引用

<script src="/dist/vendors.dll.js"></script>
<script src="/dist/app.bundle.js"></script>

DLL Link Plugin

上面的用法也存在一些不方便的地方,比如在 webpack.config.js 中要明确指出对应的 manifest.json 文件。还有当 DLL 需要更新的时候,比如 react 升级了,或者加入新的第三方库,都需要手动像下面这样编译一次。

$ webpack --config webpack.dll.config.js

因为上面这些问题,所以基于官方的 DllReferencePlugin,我写了一个打包的插件,Dll Link Plugin。

使用这个插件,只需要对 webpack.config.js 作下小小的改动

const webpack = require('webpack')
const DllLinkPlugin = require('dll-link-webpack-plugin')

module.exports = {
 // ...
 plugins: [
  new DllLinkPlugin({
   config: require('webpack.dll.config.js')
  })
 ]
}

直接替换掉 DllReferencePlugin,然后传入对应的 DLL 配置文件就可以了。每次打包的时候,只需要运行

$ webpack --config webpack.config.js

上面的命令便会自动生成对应的 vendors 文件,需要更新的时候,也会自动更新。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Webpack  # DLL  # DLL用法  # 详解webpack性能优化——DLL  # Webpack性能优化 DLL 用法详解  # Webpack的dll功能使用  # 第三方  # 自己的  # 配置文件  # 能把  # 是一种  # 会有  # 也会  # 则是  # 只需  # 希望能  # 写了  # 只需要  # 要对  # 便会  # 有两种  # 最简单  # 如在  # 要使  # 使用这个  # 中要 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高防服务器租用指南:配置选择与快速部署攻略  北京网站制作公司哪家好一点,北京租房网站有哪些?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何快速搭建虚拟主机网站?新手必看指南  如何快速建站并高效导出源代码?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  智能起名网站制作软件有哪些,制作logo的软件?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  网站优化排名时,需要考虑哪些问题呢?  Android利用动画实现背景逐渐变暗  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  QQ浏览器网页版登录入口 个人中心在线进入  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  黑客如何通过漏洞一步步攻陷网站服务器?  三星、SK海力士获美批准:可向中国出口芯片制造设备  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  微信小程序 canvas开发实例及注意事项  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何在万网主机上快速搭建网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  JavaScript中的标签模板是什么_它如何扩展字符串功能  如何在万网ECS上快速搭建专属网站?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  常州企业网站制作公司,全国继续教育网怎么登录?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel如何生成URL和重定向?(路由助手函数)  如何在建站宝盒中设置产品搜索功能?  浅析上传头像示例及其注意事项  公司门户网站制作流程,华为官网怎么做?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  如何用低价快速搭建高质量网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Python结构化数据采集_字段抽取解析【教程】  jQuery validate插件功能与用法详解  个人摄影网站制作流程,摄影爱好者都去什么网站?  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何快速生成可下载的建站源码工具?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何快速生成专业多端适配建站电话?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  js实现点击每个li节点,都弹出其文本值及修改  bing浏览器学术搜索入口_bing学术文献检索地址  东莞市网站制作公司有哪些,东莞找工作用什么网站好?