一篇文章带你浅入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实现点击栏目背景色改变
Dec 10 Javascript
jQuery中读取json文件示例代码
May 10 Javascript
JS调用页面表格导出excel示例代码
Mar 18 Javascript
分享一款基于jQuery的视频播放插件
Oct 09 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
Nov 21 Javascript
JavaScript实现格式化字符串函数String.format
Dec 16 Javascript
JS实现滑动门效果的方法详解
Dec 19 Javascript
Vue 过渡实现轮播图效果
Mar 27 Javascript
详解webpack es6 to es5支持配置
May 04 Javascript
Angularjs2不同组件间的通信实例代码
May 06 Javascript
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
JS中的一些常用的函数式编程术语
Jun 15 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中实现记住密码自动登录的代码
2011/03/02 PHP
PHP 文件系统详解
2012/09/13 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
PHP7 弃用功能
2021/03/09 PHP
jQuery 操作XML入门
2008/12/25 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
python中四舍五入的正确打开方式
2021/01/18 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
高中数学教学反思
2014/01/30 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
2019年大学推荐信
2019/06/24 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫