一篇文章带你浅入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 相关文章推荐
使两个iframe的高度与内容自适应,且相等
Nov 20 Javascript
简单的js分页脚本
May 21 Javascript
学习ExtJS Panel常用方法
Oct 07 Javascript
JavaScript的eval JSON object问题
Nov 15 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
ie下jquery.getJSON的缓存问题的处理方法
Mar 29 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
在子窗口中关闭父窗口的一句代码
Oct 21 Javascript
jquery制作LED 时钟特效
Feb 01 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
May 17 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
Sep 10 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
PHP 5.3.0 安装分析心得
2009/08/07 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
JS实现列表页面隔行变色效果
2017/03/25 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
你常见到的runtime exception
2016/09/05 面试题
党员先锋岗事迹材料
2014/05/08 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
留学推荐信英文范文
2015/03/26 职场文书
戒赌保证书
2015/05/11 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
python 命令行传参方法总结
2021/05/25 Python
Java基础——Map集合
2022/04/01 Java/Android