解决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 相关文章推荐
JS 对象介绍
Jan 20 Javascript
JQuery给元素绑定click事件多次执行的解决方法
May 29 Javascript
JavaScript中的Repaint和Reflow用法详解
Jul 27 Javascript
详解javascript实现自定义事件
Jan 19 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
使用canvas及js简单生成验证码方法
Apr 02 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
Sep 22 Javascript
详解如何用babel转换es6的class语法
Apr 03 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
5分钟快速掌握JS中var、let和const的异同
Sep 19 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
Dec 06 Javascript
js常见遍历操作小结
Jun 06 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
人力资源主管职责范本
2014/03/05 职场文书
广播节目策划方案
2014/05/23 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers
Python创建SQL数据库流程逐步讲解
2022/09/23 Python