解决webpack打包速度慢的解决办法汇总


Posted in Javascript onJuly 06, 2017

刚开始用webpack,谈一谈解决webpack打包慢的问题的方法

技巧1

webpack在打包的时候第一次总是会做很长的准备工作,包括加载插件之类的。在刚接触webpack的时候总是webpack一下-测一下-改一下-再webpack一下,这种方式最后让很多人崩溃了觉得webpack一点都不好用。其实这是错误的使用方式。

正确的方式应直接执行webpack --watch 这样webpack会自动编译,第一回的时候确实很慢,但之后的自动编译就要快了好多,打包时间相差几倍。

技巧2

webpack配合的React,jQuery一些共有的库去使用,虽然没写几行代码却发现我靠打个文件居然好几M了。能不能不让这些共有库打入我们的文件呢?

externals: 
    {
      'antd':true,
      'react': 'React',
      'react-dom': 'ReactDOM'
    }

在webpack配置文件的根上加上这些内容。告诉webpack在require(“react”)的时候不要去加载模块,直接去读(这里还不是很明白,有的说“:”后面是window.React,写了后面可以直接使用无需require,待确定后再补充,一般写true就可以了),当然这种方式要在html入口手动引入js文件:

<script src="node_modules/react/dist/react-with-addons.js"></script>
<script src="node_modules/react-dom/dist/react-dom.min.js"></script>
<script src="node_modules/antd/dist/antd.min.js"></script>

在项目中正常使用require(“react”)试试,不会被打进去了,文件变为了几k,突然感觉webpack这东西还是能用的。

技巧3

大部分情况下通过技巧2已经可以搞定大部分问题了,但是在用MaterialUI的时候,点击事件总是报一个错误,大概意思是重复的引入了react什么的。如果出现这个问题,那么请使用技巧3。将那些共有的模块打进另外一个文件中,然后使用CommonsChunkPlugin插件,在webpack ?watch非第一编打包的时候就不会重复的打另外一个文件了。

entry: {
    //这是我自己文件的入口,换成自己的
    main: './apps/main.jsx',
    //这个是把外面的东西打包成common.js
    'common':['./node_modules/react/dist/react-with-addons.min.js','./node_modules/react-dom/dist/react-dom.min.js']

  },
plugins: [
    //把common.js变为共有的,除第一遍打包后就不会再打包了
    new webpack.optimize.CommonsChunkPlugin('common', 'common.js')
  ]
output: {
    path: path.resolve(containerPath,'dist/'),
    filename: '[name].js'
  }

在webpack配置文件的根上加上这些内容,在html入口处需要引入common.js

//确认一下是不是第一回打包后这个文件已经有了
<script src="dist/common.js"></script>

这种方式在webpack -watch后第一遍依旧很慢(因为要打common) 之后修改默认打包是就不会再打common了。而且还有一个优点就是不用再引React,jquery一堆文件了,只引common一个文件就ok。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用dtree实现树形菜单 dtree使用说明
Oct 17 Javascript
JS获取网页属性包括宽、高等等
Apr 03 Javascript
Js实现滚动变色的文字效果
Jun 16 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
js实现创建删除html元素小结
Sep 30 Javascript
Javascript基础知识盲点总结之函数
May 15 Javascript
js实现日历的简单算法
Jan 24 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
Mar 08 Javascript
javascript 封装Date日期类实例详解
May 28 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
express中static中间件的具体使用方法
Oct 17 Javascript
如何在JavaScript中创建具有多个空格的字符串?
Feb 23 Javascript
详解微信小程序Radio选中样式切换
Jul 06 #Javascript
Node.js 回调函数实例详解
Jul 06 #Javascript
详解vue渲染从后台获取的json数据
Jul 06 #Javascript
微信小程序 Buffer缓冲区的详解
Jul 06 #Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 #Javascript
vue-cli如何添加less 以及sass
Jul 06 #Javascript
微信小程序 跳转传递数据的实例
Jul 06 #Javascript
You might like
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
javascript Demo模态窗口
2009/12/06 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
python根据经纬度计算距离示例
2014/02/16 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
解决python 文本过滤和清理问题
2019/08/28 Python
Python函数参数分类原理详解
2020/05/28 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
茶叶生产计划书
2014/01/10 职场文书
项目合作意向书范本
2014/04/01 职场文书
大学生社团活动总结
2014/04/26 职场文书
投标授权委托书范文
2014/08/02 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
保护地球的宣传语
2015/07/13 职场文书
给校长的建议书范文
2015/09/14 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers