facebook/flow

GitHub: facebook/flow

Flow 是 Facebook 开发的 JavaScript 静态类型检查器,通过 OCaml 实现高性能的类型推断与检查,帮助开发者在编码阶段发现类型相关错误。

Stars: 22207 | Forks: 1885

# Flow

CircleCI Follow @flowtype MIT License GitHub contributors GitHub top language Join Discord Chat

Flow 是一个 JavaScript 的静态类型检查器。要了解更多关于 Flow 的信息,请查看 [flow.org](https://flow.org/)。 ## 目录 - [系统要求](#requirements) - [使用 Flow](#using-flow) - [在 JavaScript 中使用 Flow 的解析器](#using-flows-parser-from-javascript) - [从源码构建 Flow](#building-flow-from-source) - [加入 Flow 社区](#join-the-flow-community) - [许可证](#license) ## 系统要求 Flow 支持以下系统: * macOS (x86_64) * Linux (x86_64 和 arm64) * Windows (x86_64,推荐 Windows 10) 每个平台都有相应的[二进制发行版](https://github.com/facebook/flow/releases),您也可以在上述任一平台上从源码进行构建。 ## 使用 Flow 请查看[安装说明](https://flow.org/en/docs/getting-started/#toc-installation),然后阅读[使用文档](https://flow.org/en/docs/getting-started/#toc-usage)。 ## 在 JavaScript 中使用 Flow 的解析器 虽然 Flow 是用 OCaml 编写的,但其解析器作为一个编译为 JavaScript 的模块发布在了 npm 上,名为 [flow-parser](https://www.npmjs.com/package/flow-parser)。**大多数 Flow 的最终用户 不需要直接使用此解析器**,但需要解析 Flow 类型化 JavaScript 的 JavaScript 包可以使用它来生成附带类型注解的 Flow 语法树。 ## 从源码构建 Flow Flow 是使用 OCaml 编写的(需要 OCaml 5.2.0)。 1. 安装系统依赖项: - Mac: `brew install opam` - Debian: `sudo apt-get install opam` - 其他 Linux: 参见 [opam 文档](https://opam.ocaml.org/doc/Install.html) - Windows: 需要安装 [cygwin](https://cygwin.com/) 以及许多如 `make`、`gcc` 和 `g++` 这样的依赖项。 一种安装所有依赖的方法是先安装 [Chocolatey](https://chocolatey.org/),然后运行 `.\scripts\windows\install_deps.ps1` 和 `.\scripts\windows\install_opam.ps1`。否则,请参阅 [Windows 版 OCaml 文档](https://fdopen.github.io/opam-repository-mingw/installation/) 中的“手动安装”部分,并安装我们的 `install_deps.ps1` 中列出的所有包。 后续的说明都应该在 Cygwin shell 内运行:`C:\tools\cygwin\Cygwin`。然后执行 `cd /cygdrive/c/Users/you/path/to/checkout`。 2. 验证 `opam` 版本是否为 `2.x.x`: opam --version 以下说明针对的是 `2.x.x` 版本。如果您的包管理器安装的是 `1.x.x` 版本,请参阅 [opam 文档](https://opam.ocaml.org/doc/Install.html) 手动安装较新的版本。 3. 初始化 `opam`: # 在 Mac 和 Linux 上: opam init # 在 Windows 上: scripts/windows/init_opam.sh 4. 安装 Flow 的 OCaml 依赖项: # 在此 git 检出目录中 make deps **注意**:如果您发现出现寻找 `ocaml-base-compiler` 版本的错误,可能是您本地的依赖库已过期,您需要运行 `opam update` + `opam upgrade` 5. 构建 `flow` 二进制文件: eval $(opam env) make 这将生成 `bin/flow` 二进制文件。 6. 构建 `flow.js`(可选): opam install -y js_of_ocaml.5.7.2 make js 这将生成 `bin/flow.js`。 Flow 解析器也可以编译为 JavaScript。[在此处阅读具体方法](src/parser/README.md)。 ## 运行测试 有关详细的测试文档,请参见 [tests/README.md](tests/README.md)。 ## 加入 Flow 社区 * 网站: [https://flow.org](https://flow.org/) * Discord: https://discord.gg/8ezwRUK * irc: Freenode 上的 #flowtype * Twitter: 关注 [@flowtype](https://twitter.com/flowtype) 和 [#flowtype](https://twitter.com/hashtag/flowtype) 以获取最新的 Flow 资讯。 * Stack Overflow: 使用 [flowtype 标签](https://stackoverflow.com/questions/tagged/flowtype) 提问 ## 许可证 Flow 采用 MIT 许可证 ([LICENSE](https://github.com/facebook/flow/blob/main/LICENSE))。[网站](https://flow.org/)和[文档](https://flow.org/en/docs/)采用知识共享署名 4.0 许可证 ([website/LICENSE-DOCUMENTATION](https://github.com/facebook/flow/blob/main/website/LICENSE-DOCUMENTATION))。
标签:CMS安全, Facebook, Flow, IDE插件, JavaScript, OCaml, odt, 云安全监控, 代码审查, 代码静态检测, 威胁情报, 开发者工具, 抽象语法树, 数据可视化, 暗色界面, 漏洞数据库, 类型系统, 编码规范, 编译原理, 解析器, 通知系统, 静态分析, 静态类型检查