彻底解决Webpack打包慢的问题

文章详细分析了为何一个小的动画库会导致Webpack重新打包整个react库,原因是库之间的复杂依赖关系。提出了两种解决方案:一是手动打包并设置externals,二是利用Webpack的DllPlugin进行动态链接库打包,将打包过程分为两步,从而提高打包效率。
摘要由CSDN通过智能技术生成

==============

问题如果就这么简单地解决了的话,那我就没必要写这篇文章了,下面我们加一个 react 的动画库 react-addons-css-transition-group 来试一试:

import React from ‘react’;

import ReactAddonsCssTransitionGroup from ‘react-addons-css-transition-group’;

console.log(React);

对,你没有看错,我也没有截错图,新加了一个很小很小的动画库之后,性能又爆炸了。从模块数来看,一定是 Webpack 又把 react 重新打包了一遍。

我们来看一下为什么一个很小很小的动画库会导致 Webpack 又傻傻地把 react 重新打包了一遍。找到 react-addons-css-transition-group 这个模块,然后看看它是怎么写的:

// react-addons-css-transition-group模块

// 入口文件 index.js

module.exports = require(‘react/lib/ReactCSSTransitionGroup’);

这个动画模块就只有一行代码,唯一的作用就是指向 react 下面的一个子模块,我们再来看看这个子模块是怎么写的:

// react模块

// react/lib/ReactCSSTransitionGroup.js

var React = require(‘./React’);

var ReactTransitionGroup = require(‘./ReactTransitionGroup’);

var ReactCSSTransitionGroupChild = require(‘./ReactCSSTransitionGroupChild’);

//…剩余代码忽略

这个子模块又反回去依赖了 react 整个库的入口,这就是拖累 Webpack 的罪魁祸首。

总而言之,问题是这样产生的:

  1. Webpack 发现我们依赖了 react-addons-css-transition-group

  2. Webpack 去打包 react-addons-css-transition-group 的时候发现它依赖了 react 模块下的一个叫 ReactTransitionGroup.js 的文件,于是 Webpack 去

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值