解决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 相关文章推荐
深入认识javascript中的eval函数
Nov 02 Javascript
从数组中随机取x条不重复数据的JS代码
Dec 24 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
Mar 28 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
Jul 28 Javascript
纯javascript实现自动发送邮件
Oct 21 Javascript
js+html5实现的自由落体运动效果代码
Jan 28 Javascript
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
小程序实现选择题选择效果
Nov 04 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 20 Javascript
layui原生表单验证的实例
Sep 09 Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 Javascript
使用js和canvas实现时钟效果
Sep 08 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函数getenv简介和使用实例
2014/05/12 PHP
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python获取糗百图片代码实例
2013/12/18 Python
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
主管会计岗位职责
2014/03/13 职场文书
企业贷款委托书格式
2014/09/12 职场文书
学生吸烟检讨书
2014/09/14 职场文书
二审代理词范文
2015/05/25 职场文书
详解Redis瘦身指南
2021/05/26 Redis
mysql查找连续出现n次以上的数字
2022/05/11 MySQL
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript