facebook/flow
GitHub: facebook/flow
Flow 是 Facebook 开发的 JavaScript 静态类型检查器,通过 OCaml 实现高性能的类型推断与检查,帮助开发者在编码阶段发现类型相关错误。
Stars: 22207 | Forks: 1885
# Flow
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, 云安全监控, 代码审查, 代码静态检测, 威胁情报, 开发者工具, 抽象语法树, 数据可视化, 暗色界面, 漏洞数据库, 类型系统, 编码规范, 编译原理, 解析器, 通知系统, 静态分析, 静态类型检查