一篇文章带你浅入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 index()方法使用代码
Jun 02 Javascript
JavaScript用select实现日期控件
Jul 17 Javascript
JS实现IE状态栏文字缩放效果代码
Oct 24 Javascript
不用一句js代码初始化组件
Jan 27 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
May 13 Javascript
AngularJs  Creating Services详解及示例代码
Sep 02 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
JSON对象转化为字符串详解
Aug 11 Javascript
C#实现将一个字符转换为整数
Dec 12 Javascript
Nuxt 项目性能优化调研分析
Nov 07 Javascript
详解微信小程序轨迹回放实现及遇到的坑
Feb 02 Javascript
Node.js实现断点续传
Jun 23 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 FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
全面理解闭包机制
2016/07/11 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中的默认参数实例分析
2018/01/29 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
python 类之间的参数传递方式
2019/12/20 Python
Pytorch to(device)用法
2020/01/08 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
全球性的在线购物网站:Zapals
2017/03/22 全球购物
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
大学生操行评语大全
2014/12/31 职场文书
考研复习计划
2015/01/19 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL