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

Flow takes very long to start up because it checks node_modules

我将 Flow 添加到我的 React/Redux/Webpack 项目中,最初,它很棒,我喜欢类型注释。随着时间的推移,我注意到项目的启动时间变得非常慢——大约 120 秒;它曾经是 20 多岁左右。经过调查,我意识到这是因为 Flow 正在扫描 node_modules.

中的所有 JS 文件。

我试图通过添加以下内容来忽略 .flowconfig 中的 node_modules

[ignore]
.*node_modules/.*

启动速度再次变快,但 Flow 会在我从我的代码导入外部库的地方抱怨 Required module not found

Github issue 中建议的解决方法是忽略 node_modules 并手动为外部库添加接口。这似乎可行,但在将新库添加到项目中时维护起来很麻烦。

每次启动项目都要等将近2分钟,很郁闷,有没有更好的办法?

避免 Required module not found 错误的一种方法是 运行 flow-typed install,这将从 flow-typed 存储库中获取流行库的现有 libdef。它还会为其中找不到的库生成存根。这对许多项目都非常有效,但在极少数情况下,不会生成某些库的存根,例如 Immutable.js

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

简直运行

$ flow-scripts stub

在存储库的根目录中,libdef 存根将在 flow-typed 目录中自动生成。