流程需要很长时间才能启动,因为它会检查node_modules

问题描述:

我在我的React/Redux/Webpack项目中添加了Flow,最初它很棒,我喜欢类型注释。随着时间的推移,我注意到项目的启动时间变得非常慢 - 大约在120s左右;它曾经是20多岁。经过调查,我意识到这是因为Flow正在扫描node_modules中的所有JS文件。流程需要很长时间才能启动,因为它会检查node_modules

我试图通过添加忽略.flowconfignode_modules

[ignore] 
.*node_modules/.* 

启动快再次成为流量却会在我引入了外部库,从我的代码的地方抱怨Required module not found

在此Github issue中建议的解决方法是对node_modules进行flowignore,并为外部库手动添加接口。这似乎工作,但是当将新库添加到项目中时,这是一个麻烦。

每次开始项目时都需要等待2分钟,令人沮丧,有没有更好的想法?

避免Required module not found错误的一种方法是运行flow-typed install,它将从flow-typed存储库中为受欢迎的库提取现有的libdefs。它还为无法在其中找到的库生成存根。这对很多项目都很有用,但是在极少数情况下,不会生成Immutable.js等特定库的存根。

我终于想出了cli命令flow-scripts来自动生成libdef存根接口,这样我可以flowignore node_modules但不会得到Required module not found错误。

只需在存储库的根目录运行

$ flow-scripts stub 

和libdef存根将在flow-typed目录自动生成。