- Notifications
You must be signed in to change notification settings - Fork1.9k
Adds static typing to JavaScript to improve developer productivity and code quality.
License
facebook/flow
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Flow is a static typechecker for JavaScript. To find out more about Flow, check outflow.org.
- Requirements
- Using Flow
- Using Flow's parser from JavaScript
- Building Flow from source
- Join the Flow community
- License
Flow works with:
- macOS (x86_64)
- Linux (x86_64 and arm64)
- Windows (x86_64, Windows 10 recommended)
There arebinary distributions for each of these platforms and you can also build it from source on any of them as well.
Check out theinstallation instructions, and thenthe usage docs.
While Flow is written in OCaml, its parser is available as a compiled-to-JavaScript module published to npm, namedflow-parser.Most end users of Flowwill not need to use this parser directly, but JavaScript packages which make use of parsingFlow-typed JavaScript can use this to generate Flow's syntax tree with annotated types attached.
Flow is written in OCaml (OCaml 5.2.0 is required).
Install system dependencies:
Mac:
brew install opam
Debian:
sudo apt-get install opam
Other Linux: seeopam docs
Windows:cygwin and a number of dependencies like
make
,gcc
andg++
are required.One way to install everything is to installChocolatey and then run
.\scripts\windows\install_deps.ps1
and.\scripts\windows\install_opam.ps1
. Otherwise, see the "Manual Installation" section ofOCaml for Windows docs and install all of the packages listed in ourinstall_deps.ps1
.The remainder of these instructions should be run inside the Cygwin shell:
C:\tools\cygwin\Cygwin
. Thencd /cygdrive/c/Users/you/path/to/checkout
.
Validate the
opam
version is2.x.x
:opam --version
The following instructions expect
2.x.x
. Should your package manager have installed a1.x.x
version, please refer to theopam docs to install a newer version manually.Initialize
opam
:# on Mac and Linux:opam init# on Windows:scripts/windows/init_opam.sh
Install Flow's OCaml dependencies:
# from within this git checkoutmake deps
note: If you find that you get an error looking for
ocaml-base-compiler
version, your local dependency repo may be out of date and you need to runopam update
+opam upgrade
Build the
flow
binary:eval$(opam env)make
This produces the
bin/flow
binary.Build
flow.js
(optional):opam install -y js_of_ocaml.5.7.2make js
This produces
bin/flow.js
.The Flow parser can also be compiled to JavaScript.Read how here.
To run the tests, first compile flow usingmake
. Then runbash ./runtests.sh bin/flow
There is amake test
target that compiles and runs tests.
To run a subset of the tests you can pass a second argument to theruntests.sh
file.
For example:bash runtests.sh bin/flow class | grep -v 'SKIP'
- Website:https://flow.org
- Discord:https://discord.gg/8ezwRUK
- irc: #flowtype on Freenode
- Twitter: follow@flowtype and#flowtype to keep up with the latest Flow news.
- Stack Overflow: Ask a question with theflowtype tag
Flow is MIT-licensed (LICENSE). Thewebsite anddocumentation are licensed under the Creative Commons Attribution 4.0 license (website/LICENSE-DOCUMENTATION).
About
Adds static typing to JavaScript to improve developer productivity and code quality.
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.