Webpack重新编译未更改的文件,从而减慢构build时间
相关的webpack / webpack的问题。
根据我的经验,在实际项目中使用webpack会减慢一定数量的组件和/或依赖项。 我有一个testing存储库 ,试图用下面的应用程序来演示这个:
- 入口点是
A.js
,它需要B.js
和C.js
-
B.js
很小,没有太多的依赖关系。 -
C.js
是单一的,有成千上万的需求。
我的期望是,当在testing项目中使用webpack-dev-server
时,每当我保存B.js
,webpack应该认识到C.js
并没有触及它的依赖关系。 它应该快速地(<10ms)编译B.js
,replace它在caching中,并从初始编译中使用A.js
的caching版本输出编译后的A.js
但是,每次保存B.js
时,webpack都会编译3002
隐藏模块,导致编译时间为960ms
。 这本身并不坏,但如果你添加一些像react-hot
和babel
这样的装载机, react-hot
失去控制。
我有一个解决scheme:在同一个testing项目有一个dll
分支。 在那个分支上,你可以运行webpack --config webpack.dll.config.js
来生成B.js
和C.js
两个DLL, B.js
DLL在编译A.js
时候会被A.js
。 之后,当使用webpack-dev-server
,每当你保存B.js
,它的DLL就会被重新编译, A.js
会注意到它的一个DLL已经更新了,它只会把C.js
的旧DLL和B.js
新DLL,并将它们合并成一个快乐的快乐包。
我可以进一步在这个分支上做目录读取或依赖图走,为每个组件生成一个DLL,这个方法可能被应用到每个webpack项目。 这在理论上应该尽可能快地编译。 但在这一点上,在我看来,我将重新实现(糟糕的)webpack中的caching层应该做什么,所以这里发生了什么?