一篇文章带你浅入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实现简单模态窗口,背景灰显
Nov 14 Javascript
jquery使用animate方法实现控制元素移动
Mar 27 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 Javascript
JavaScript实现前端分页控件
Apr 19 Javascript
js使用xml数据载体实现城市省份二级联动效果
Nov 08 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
Feb 26 Javascript
vue axios登录请求拦截器
Apr 02 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
layui 阻止图片上传的实例(before方法)
Sep 26 Javascript
js获取url页面id,也就是最后的数字文件名
Sep 25 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执行速度全攻略(上)
2006/10/09 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
EL表达式截取字符串的函数说明
2017/09/22 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python的迭代器和生成器
2015/07/29 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
品学兼优的大学生自我评价
2013/09/20 职场文书
致100米运动员广播稿
2014/02/14 职场文书
在校学生证明格式
2015/06/24 职场文书
暑期工社会实践报告
2015/07/13 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
创业计划书之物流运送
2019/09/17 职场文书