一篇文章带你浅入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 相关文章推荐
摘自启点的main.js
Apr 20 Javascript
jquery的父子兄弟节点查找示例代码
Mar 03 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
Aug 24 Javascript
整理Javascript基础语法学习笔记
Nov 29 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
表单中单选框添加选项和移除选项
Jul 04 Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
详解Vue如何支持JSX语法
Nov 10 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
微信小程序五子棋游戏AI实现方法【附demo源码下载】
Feb 20 Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 Javascript
JS实现点星星消除小游戏
Mar 24 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
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
linux下安装easy_install的方法
2013/02/10 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
详解Python中的动态属性和特性
2018/04/07 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
详解Python中的Lock和Rlock
2021/01/26 Python
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
大学生自我鉴定
2013/12/16 职场文书
中职生求职信
2014/07/01 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
创业计划书之便利店
2019/09/05 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python