详解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


相关推荐: Android利用动画实现背景逐渐变暗  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Laravel安装步骤详细教程_Laravel环境搭建指南  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何快速搭建高效可靠的建站解决方案?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  企业网站制作这些问题要关注  如何在IIS中新建站点并配置端口与IP地址?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel怎么上传文件_Laravel图片上传及存储配置  如何在建站之星网店版论坛获取技术支持?  网易LOFTER官网链接 老福特网页版登录地址  Swift中swift中的switch 语句  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  如何在搬瓦工VPS快速搭建网站?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何快速查询网址的建站时间与历史轨迹?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Windows Hello人脸识别突然无法使用  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何用好域名打造高点击率的自主建站?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel如何处理表单验证?(Requests代码示例)  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何配置和使用缓存?(Redis代码示例)  如何在万网自助建站平台快速创建网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  iOS验证手机号的正则表达式  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Laravel如何实现API版本控制_Laravel版本化API设计方案  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  如何用腾讯建站主机快速创建免费网站?  高防服务器租用如何选择配置与防御等级?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel如何实现本地化和多语言支持?(i18n教程)  微信推文制作网站有哪些,怎么做微信推文,急?