一篇文章带你浅入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 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
检测jQuery.js是否已加载的判断代码
May 20 Javascript
JS在IE下缺少标识符的错误
Jul 23 Javascript
javascript数组遍历for与for in区别详解
Dec 04 Javascript
本人自用的global.js库源码分享
Feb 28 Javascript
剖析Node.js异步编程中的回调与代码设计模式
Feb 16 Javascript
Vue2 使用 Echarts 创建图表实例代码
May 18 Javascript
Bootstrap输入框组件使用详解
Jun 09 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
Vue中的vue-resource示例详解
Nov 02 Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 Javascript
记一次vue跨域的解决
Oct 21 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批量去除文件UTF8 BOM信息
2013/08/05 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
tensorflow训练中出现nan问题的解决
2018/02/10 Python
python中字符串的操作方法大全
2018/06/03 Python
Python使用python-docx读写word文档
2019/08/26 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
phpquery中文手册
2021/03/18 PHP
国际书籍零售商:Wordery
2017/11/01 全球购物
创业计划书撰写原则
2014/01/25 职场文书
给国外客户的邀请函
2014/01/30 职场文书
黄河的主人教学反思
2014/02/07 职场文书
毕业生自荐信格式
2014/03/07 职场文书
戒赌保证书
2015/05/11 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android