一篇文章带你浅入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 相关文章推荐
js prototype截取字符串函数
Apr 01 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
Oct 29 Javascript
jQuery实现隔行背景色变色
Nov 24 Javascript
JS取模、取商及取整运算方法示例
Oct 13 Javascript
概述一个页面从输入URL到页面加载完的过程
Dec 16 Javascript
underscore之Collections_动力节点Java学院整理
Jul 10 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
Sep 28 Javascript
对vue中v-on绑定自定事件的实例讲解
Sep 06 Javascript
ES6的Fetch异步请求的实现方法
Dec 07 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 Javascript
JavaScript中的几种继承方法示例
Dec 06 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通过cookies获取远程网页的指定代码
2013/06/25 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python 的 with 语句详解
2014/06/13 Python
python实现k-means聚类算法
2018/02/23 Python
Python3实现转换Image图片格式
2018/06/21 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
python返回数组的索引实例
2019/11/28 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
Django实现内容缓存实例方法
2020/06/30 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
python中操作文件的模块的方法总结
2021/02/04 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
新浪网技术部笔试题
2016/08/26 面试题
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
AURALog面试题软件测试方面
2013/10/22 面试题
临床医学系毕业生推荐信
2013/11/09 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书