一篇文章带你浅入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 相关文章推荐
jQuery插件PageSlide实现左右侧栏导航菜单
Apr 12 Javascript
JavaScript实现MIPS乘法模拟的方法
Apr 17 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
May 19 Javascript
Javascript实现div的toggle效果实例分析
Jun 09 Javascript
Jquery全选与反选点击执行一次的解决方案
Aug 14 Javascript
JavaScript的removeChild()函数用法详解
Dec 27 Javascript
AngularJS实现表单验证功能详解
Oct 12 Javascript
深入浅析var,let,const的异同点
Aug 07 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
Sep 21 Javascript
vue遍历生成的输入框 绑定及修改值示例
Oct 30 Javascript
详解JavaScript的this指向和绑定
Sep 08 Javascript
vue图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
浅析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中header和session_start前不能有输出原因分析
2013/01/11 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
vue实现评论列表功能
2019/10/25 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python中为什么要用self探讨
2015/04/14 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
python hook监听事件详解
2018/10/25 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python处理excel绘制雷达图
2019/10/18 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
社区庆中秋节活动方案
2014/02/07 职场文书
安全月活动总结
2014/05/05 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
团组织推优材料
2014/12/29 职场文书
2014年个人总结范文
2015/03/09 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书