一篇文章带你浅入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 相关文章推荐
为JavaScript类型增加方法的实现代码(增加功能)
Dec 29 Javascript
javascript中有趣的反柯里化深入分析
Dec 05 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
Apr 06 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
Jan 08 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
Mar 01 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
Jun 30 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
小程序点击图片实现png转jpg
Oct 22 Javascript
vue实现在data里引入相对路径
Jun 05 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 循环列出目录内容的函数代码
2010/05/26 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
python检测服务器是否正常
2014/02/16 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Python2与Python3的区别实例总结
2019/04/17 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
大学活动总结格式
2014/04/29 职场文书
活动总结的格式
2014/05/07 职场文书
村级换届选举方案
2014/05/10 职场文书
优秀党员个人总结
2015/02/14 职场文书
企业财务经理岗位职责
2015/04/08 职场文书