解决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 new Date() 出现NaN 的分析
Oct 23 Javascript
jQuery的选择器中的通配符使用介绍
Mar 20 Javascript
使用AngularJS 应用访问 Android 手机的图片库
Mar 24 Javascript
Node.js编程中客户端Session的使用详解
Jun 23 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
Dec 10 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
May 30 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
Sep 28 Javascript
jQuery中Chosen三级联动功能实例代码
Mar 07 Javascript
JS 事件机制完整示例分析
Jan 15 Javascript
鸿蒙系统中的 JS 开发框架
Sep 18 Javascript
uni-app 微信小程序授权登录的实现步骤
Feb 18 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 分页类 扩展代码
2009/06/11 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
php中数组最简单的使用方法
2020/12/27 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
Python实现Linux命令xxd -i功能
2016/03/06 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python单例模式实例解析
2018/08/28 Python
python调用c++传递数组的实例
2019/02/13 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
python logging添加filter教程
2019/12/24 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
python中Django文件上传方法详解
2020/08/05 Python
python中doctest库实例用法
2020/12/31 Python
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
机械制造专业大学生自我鉴定
2014/09/19 职场文书
政风行风评议心得体会
2014/10/21 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
Python编程编写完善的命令行工具
2021/09/15 Python