跳过至主要内容

懒惰模式

默认情况下,Flow 服务器会对所有代码进行类型检查。这样它就可以回答诸如“我的代码中是否存在任何 Flow 错误”之类的问题。这对于工具非常有用,例如持续集成钩子,它可以防止引入 Flow 错误的代码更改。

但是,有时 Flow 用户可能并不关心所有代码。如果他们正在编辑文件 foo.js,他们可能只想让 Flow 对回答有关 foo.js 的问题所需的代码子集进行类型检查。由于 Flow 只会检查更少的文件,因此这会更快。这是 Flow 懒惰模式背后的动机。

分类文件

懒惰模式将您的代码分为四类

  1. 关注文件。这些是用户关心的文件。
  2. 依赖文件。这些是依赖于关注文件的文件。对关注文件的更改可能会导致依赖文件中的类型错误。
  3. 依赖项文件。这些是为对关注文件或依赖文件进行类型检查而必需的文件。
  4. 未检查文件。所有其他文件。

懒惰模式仍然会找到所有 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