懒惰模式
默认情况下,Flow 服务器会对所有代码进行类型检查。这样它就可以回答诸如“我的代码中是否存在任何 Flow 错误”之类的问题。这对于工具非常有用,例如持续集成钩子,它可以防止引入 Flow 错误的代码更改。
但是,有时 Flow 用户可能并不关心所有代码。如果他们正在编辑文件 foo.js
,他们可能只想让 Flow 对回答有关 foo.js
的问题所需的代码子集进行类型检查。由于 Flow 只会检查更少的文件,因此这会更快。这是 Flow 懒惰模式背后的动机。
分类文件
懒惰模式将您的代码分为四类
- 关注文件。这些是用户关心的文件。
- 依赖文件。这些是依赖于关注文件的文件。对关注文件的更改可能会导致依赖文件中的类型错误。
- 依赖项文件。这些是为对关注文件或依赖文件进行类型检查而必需的文件。
- 未检查文件。所有其他文件。
懒惰模式仍然会找到所有 JavaScript 文件并解析它们。但它不会对未检查的文件进行类型检查。
选择关注文件
Flow 会在磁盘上的文件发生更改时关注文件,使用 Flow 内置的文件监视器 (“dfind”) 或 Watchman。
因此,在 Flow 运行时发生更改的所有文件都将成为关注文件。但对于 Flow 未运行时发生更改的文件呢?如果您使用的是 Git 或 Mercurial,Flow 会询问它自与“master”的合并基点(当前提交和 master 分支的共同祖先)以来发生更改的所有文件。
如果您没有使用“master”(例如使用“main”),您可以使用 file_watcher.mergebase_with
配置更改此设置。如果您从克隆中工作,您可能希望将其设置为“origin/master”(对于 Git),这将关注所有本地更改的文件,即使您提交到本地“master”分支。
最终结果是,只要上游没有错误,Flow 在懒惰模式下会发现与完整检查相同的错误。例如,如果您的 CI 确保“master”中没有错误,那么对于 Flow 来说,检查所有未更改的文件以查找可能不存在的错误是多余的。
使用懒惰模式
要启用懒惰模式,请在 .flowconfig
中设置 lazy_mode=true
。
要手动在懒惰模式下启动 Flow,请运行
flow start --lazy-mode true
强制 Flow 将文件视为关注文件
您可以强制 Flow 从 CLI 将一个或多个文件视为关注文件。
flow force-recheck --focus path/to/A.js path/to/B.js