一篇文章带你浅入webpack的DLL优化打包


Posted in Javascript onFebruary 20, 2020

一、前言

我们在使用第三方包的时候,一般内部的代码都不会变,但是当webpack打包的时候,还是回去处理第三方包。我们是否可以利用一些方法来改进呢?我们可以先对第三方包处理,然后再打包。

二、实战

1、初始化

npm init

2、局部安装webpack

npm i -D webpack

3、编辑package.json

加入一行代码,方便运行命令,
"start": "webpack --config webpack.config.js"

{
 "name": "webpack_demo",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "start": "webpack --config webpack.config.js"
 },
 "author": "",
 "license": "ISC",
 "devDependencies": {
  "webpack": "^4.41.5"
 }
}

4、创建index.html

<html>
<head>
 <meta charset="UTF-8">
</head>
<body>
<div id="app"></div>
<!--导入 Webpack 输出的 JavaScript 文件-->
<script src="./dist/bundle.js"></script>
</body>
</html>

5、创建main.js,引入第三方包

import $ from 'jquery';
console.log($);

6、创建webpack.config.js

const path = require('path');
const webpack = require('webpack');
module.exports = {
  // JavaScript 执行入口文件
  entry: './main.js',
  output: {
    // 把所有依赖的模块合并输出到一个 bundle.js 文件
    filename: 'bundle.js',
    // 输出文件都放到 dist 目录下
    path: path.resolve(__dirname, './dist'),
  },
  plugins:[]
};

这样,我们的基础项目已经搭建完成了,我们来打包一下。

npm run start

时间:943ms

一篇文章带你浅入webpack的DLL优化打包

下面,我们使用DLL优化一下。

1、创建webpack.dll.js

使用插件webpack.DllPlugin

const webpack=require('webpack');
module.exports={
  entry:{
    vendor:['jquery'] // 第三方库
  },
  output:{
    path:__dirname+"/dll",
    filename:'[name].dll.js',
    library:'[name]_library'
  },
  plugins:[
    new webpack.DllPlugin({
      path:__dirname+'/dll/[name]-menifest.json',
      name:'[name]_library'
    })
  ]
}

2、运行一下webpack.dll.js

编辑一下package.json,加入一行"dll": "webpack --config webpack.dll.js",方便运行。

{
 "name": "webpack_p",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "start": "webpack --config webpack.config.js",
  "dll": "webpack --config webpack.dll.js"
 },
 "author": "",
 "license": "ISC",
 "devDependencies": {
  "webpack": "^4.41.6",
  "webpack-cli": "^3.3.11"
 }
}

运行命令

npm run dll

一篇文章带你浅入webpack的DLL优化打包

3、编辑webpack.config.js

使用插件webpack.DllReferencePlugin

const path = require('path');
const webpack = require('webpack');
module.exports = {
  // JavaScript 执行入口文件
  entry: './main.js',
  output: {
    // 把所有依赖的模块合并输出到一个 bundle.js 文件
    filename: 'bundle.js',
    // 输出文件都放到 dist 目录下
    path: path.resolve(__dirname, './dist'),
  },
  plugins:[
    new webpack.DllReferencePlugin({
      manifest: require('./dll/vendor-menifest.json')
    })
  ]
};

4、打包

npm run start

时间:473ms
优化完毕。

一篇文章带你浅入webpack的DLL优化打包

三、结语

webpack优化有很多,我将会不断更新,谢谢。

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

Javascript 相关文章推荐
showModelessDialog()使用详解
Sep 21 Javascript
在Javascript中定义对象类别
Dec 22 Javascript
js里的prototype使用示例
Nov 19 Javascript
js中parseInt函数浅谈
Jul 31 Javascript
JS根据变量保存方法名并执行方法示例
Apr 04 Javascript
javascript异步处理工作机制详解
Apr 13 Javascript
layui前段框架日期控件使用方法详解
May 19 Javascript
jQuery ajax动态生成table功能示例
Jun 14 jQuery
详解vue中localStorage的使用方法
Nov 22 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
vue中的过滤器实例代码详解
Jun 06 Javascript
JavaScript实现鼠标移入随机变换颜色
Nov 24 Javascript
浅析JS中NEW的实现原理及重写
Feb 20 #Javascript
JS通过识别id、value值对checkbox设置选中状态
Feb 19 #Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 #Javascript
Vue组件模板的几种书写形式(3种)
Feb 19 #Javascript
详解Vue 单文件组件的三种写法
Feb 19 #Javascript
vue中 v-for循环的用法详解
Feb 19 #Javascript
vue 使用v-for进行循环的实例代码详解
Feb 19 #Javascript
You might like
php生成与读取excel文件
2016/10/14 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
python实现Windows电脑定时关机
2018/06/20 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
Python3远程监控程序的实现方法
2019/07/15 Python
解析python的局部变量和全局变量
2019/08/15 Python
python使用配置文件过程详解
2019/12/28 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
python 追踪except信息方式
2020/04/25 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
结束运行python的方法
2020/06/16 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
2014年大班元旦活动方案
2014/02/26 职场文书
幸福中国演讲稿
2014/09/12 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL