一篇文章带你浅入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 left,right,mid函数
Jun 10 Javascript
javascript中不提供sleep功能如何实现这个功能
May 27 Javascript
jQuery.each使用详解
Jul 07 Javascript
Vue 短信验证码组件开发详解
Feb 14 Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
Sep 18 jQuery
iview给radio按钮组件加点击事件的实例
Sep 30 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
Jan 03 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
Dec 29 jQuery
小程序实现搜索框功能
Mar 26 Javascript
es6中reduce的基本使用方法
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
php Smarty模板生成html文档的方法
2010/04/12 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
python学习教程之使用py2exe打包
2017/09/24 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
python移位运算的实现
2019/07/15 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
英语自我评价范文
2014/01/24 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript