flow README

The project's README from github.com/facebook/flow. As one markdown file: README.md.

Flow

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

Flow is a static typechecker for JavaScript. To find out more about Flow, check out flow.org.

Contents

Requirements

Flow works with:

There are binary distributions for each of these platforms and you can also build it from source on any of them as well.

Using Flow

Check out the installation instructions, and then the usage docs.

Using Flow's parser from JavaScript

Flow's parser is available as a compiled-to-JavaScript module published to npm, named flow-parser. Most end users of Flow will not need to use this parser directly, but JavaScript packages which make use of parsing Flow-typed JavaScript can use this to generate Flow's syntax tree with annotated types attached.

Building Flow from source

Flow is written in Rust. GitHub CI builds Flow from the rust_port workspace with nightly Rust.

  1. Install system dependencies:

    • Install Rust via rustup.

    • Install the nightly Rust toolchain:

      rustup toolchain install nightly
      
  2. Build the Rust workspace:

    cd rust_port
    cargo +nightly build
    
  3. Run the Rust tests:

    cargo +nightly test
    
  4. Build an optimized flow binary:

    cargo +nightly build --release --bin flow_cli
    
  5. Build flow.js (optional):

    The flow.js build also uses the Rust port. Install Emscripten, Node, Yarn, and a Rust nightly toolchain with the wasm32-unknown-emscripten target and rust-src component first. GitHub CI uses Emscripten 3.1.44 and nightly Rust for this build.

    rustup toolchain install nightly-2026-04-14 --target wasm32-unknown-emscripten --component rust-src
    RUSTUP_TOOLCHAIN=nightly-2026-04-14 make js FLOW_JS_IMPL=rust-wasm
    

    This produces bin/flow.js.

    To build a faster, larger local development version instead, run:

    RUSTUP_TOOLCHAIN=nightly-2026-04-14 make js FLOW_JS_IMPL=rust-wasm FLOW_DOT_JS_WASM_PROFILE=dev
    

    The Flow parser can also be compiled to JavaScript. Read how here.

Running the tests

See tests/README.md for detailed testing documentation.

Join the Flow community

License

Flow is MIT-licensed (LICENSE). The website and documentation are licensed under the Creative Commons Attribution 4.0 license (website/LICENSE-DOCUMENTATION).

flow (facebook/flow)

Searching Database…

22.3K ·GitHub
Что это такое?Flow — это статический типизатор для JavaScript: он добавляет в ваш код статическую типизацию, чтобы находить ошибки заранее и повышать качество. Проект ведёт историю с 2014 года и написан на Rust.
Это библиотека, которую я импортирую, или утилита командной строки?Это утилита командной строки: вы запускаете бинарник flow на своей кодовой базе, и он показывает ошибки типов. Импортировать ничего не нужно — вы просто добавляете аннотации типов в свой JavaScript.
Как его запустить?Следуйте инструкции по установке на flow.org, затем документации по использованию. Готовые бинарники есть для всех поддерживаемых платформ, так что в типичном случае компилировать ничего не придётся.
Нужен ли мне Node или какая-то другая среда выполнения?Нужен только сам бинарник — Node, Python и прочие среды не требуются. Node, Yarn и Emscripten понадобятся, только если вы захотите собрать опциональный flow.js из исходников.
На каких системах он работает — пойдёт ли Intel Mac?macOS (arm64), Linux (x86_64 или arm64) и Windows (x86_64, рекомендуется Windows 10). Intel Mac в списке поддерживаемых не значится, так что там придётся собирать из исходников самостоятельно.
Можно ли использовать его в коммерческих проектах?Да: Flow распространяется по лицензии MIT, так что коммерческое использование разрешено. Сайт и документация отдельно распространяются по Creative Commons Attribution 4.0.
Смогут ли мои собственные инструменты разбирать код с типами Flow?Да — flow-parser это npm-модуль, скомпилированный в JavaScript, который строит синтаксическое дерево Flow с присоединёнными аннотациями типов. Он рассчитан на авторов инструментов; большинство обычных пользователей с ним дела не имеют.
Есть ли сборка самого типизатора на JavaScript?Да: опциональная сборка flow.js компилирует код на Rust с помощью Emscripten в bin/flow.js (нужны Node, Yarn, Emscripten и nightly-версия Rust с таргетом wasm32-unknown-emscripten). В документации описана и более быстрая, но более тяжёлая локальная сборка для разработки.
Flow до сих пор активно развивается?Похоже, что да: репозиторий создан в октябре 2014 года, у него около 22 тыс. звёзд, он не переведён в архив, и в его CI по-прежнему запускаются сборка и тесты. Есть активное сообщество на Discord, IRC и Stack Overflow.
Creator
facebook
Size
184 MB
Stars
22.3K
Age
11y
Commits · 90 Days