The [options]
section in a .flowconfig
file can contain several key-value pairs of the form:
[options] keyA=valueA keyB=valueB
Any options that are omitted will use their default values. Some options can be overridden with command line flags.
all
emoji
esproposal.class_instance_fields
esproposal.class_static_fields
esproposal.decorators
esproposal.export_star_as
esproposal.optional_chaining
esproposal.nullish_coalescing
experimental.const_params
include_warnings
log.file
max_header_tokens
module.file_ext
module.ignore_non_literal_requires
module.name_mapper
module.name_mapper.extension
module.system
module.system.node.resolve_dirname
module.use_strict
munge_underscores
no_flowlib
server.max_workers
sharedmemory.dirs
sharedmemory.minimum_available
sharedmemory.dep_table_pow
sharedmemory.hash_table_pow
sharedmemory.log_level
strip_root
suppress_comment
suppress_type
temp_dir
traces
all
(boolean)
Set this to true
to check all files, not just those with @flow
.
The default value for all
is false
.
emoji
(boolean)
Set this to true
to add emoji to the status messages that Flow outputs when it’s busy checking your project.
The default value for emoji
is false
.
esproposal.class_instance_fields
(enable|ignore|warn)
Set this to warn
to indicate that Flow should give a warning on use of instance class fields per the pending spec.
You may also set this to ignore
to indicate that Flow should simply ignore the syntax (i.e. Flow will not use this syntax to indicate the presence of a property on instances of the class).
The default value of this option is enable
, which allows use of this proposed syntax.
esproposal.class_static_fields
(enable|ignore|warn)
Set this to warn
to indicate that Flow should give a warning on use of static class fields per the pending spec.
You may also set this to ignore
to indicate that Flow should simply ignore the syntax (i.e. Flow will not use this syntax to indicate the presence of a static property on the class).
The default value of this option is enable
, which allows use of this proposed syntax.
esproposal.decorators
(ignore|warn)
Set this to ignore
to indicate that Flow should ignore decorators.
The default value of this option is warn
, which gives a warning on use since this proposal is still very early-stage.
esproposal.export_star_as
(enable|ignore|warn)
Set this to enable
to indicate that Flow should support the export * as
syntax from leebyron’s proposal.
You may also set this to ignore
to indicate that Flow should simply ignore the syntax. The default value of this option is warn
, which gives a warning on use since this proposal is still very early-stage.
esproposal.optional_chaining
(enable|ignore|warn)
Set this to enable
to indicate that Flow should support the use of optional chaining per the pending spec.
You may also set this to ignore
to indicate that Flow should simply ignore the syntax.
The default value of this option is warn
, which gives a warning on use since this proposal is still very early-stage.
esproposal.nullish_coalescing
(enable|ignore|warn)
Set this to enable
to indicate that Flow should support the use of nullish coalescing per the pending spec.
You may also set this to ignore
to indicate that Flow should simply ignore the syntax.
The default value of this option is warn
, which gives a warning on use since this proposal is still very early-stage.
experimental.const_params
(boolean)
Setting this to true
makes Flow treat all function parameters as const bindings. Reassigning a param is an error which lets Flow be less conservative with refinements.
The default value is false
.
include_warnings
(boolean)
Setting this to true
makes Flow commands include warnings in the error output. Warnings are hidden by default in the CLI to avoid console spew. (An IDE is a much better interface to show warnings.)
The default value is false
.
log.file
(string)
The path to the log file (defaults to /tmp/flow/<escaped root path>.log
).
max_header_tokens
(integer)
Flow tries to avoid parsing non-flow files. This means Flow needs to start lexing a file to see if it has @flow
or @noflow
in it. This option lets you configure how much of the file Flow lexes before it decides there is no relevant docblock.
@flow
nor @noflow
- Parse this file with Flow syntax disallowed and do not typecheck it.The default value of max_header_tokens
is 10.
module.file_ext
(string)
By default, Flow will look for files with the extensions .js
, .jsx
, .mjs
and .json
. You can override this behavior with this option.
For example, if you do:
[options] module.file_ext=.foo module.file_ext=.bar
Then Flow will instead look for the file extensions .foo
and .bar
.
Note: you can specify
module.file_ext
multiple times
module.ignore_non_literal_requires
(boolean)
Set this to true
and Flow will no longer complain when you use require()
with something other than a string literal.
The default value is false
.
module.name_mapper
(regex -> string)
Specify a regular expression to match against module names, and a replacement pattern, separated by a ->
.
For example:
module.name_mapper='^image![a-zA-Z0-9$_]+$' -> 'ImageStub'
This makes Flow treat require('image!foo.jpg')
as if it were require('ImageStub')
.
These are OCaml regular expressions. Use \(
and \)
(slashes required!) to create a capturing group, which you can refer to in the replacement pattern as \1
(up to \9
).
Note: you can specify
module.name_mapper
multiple times
module.name_mapper.extension
(string -> string)
Specify a file extension to match, and a replacement module name, separated by a ->
.
Note: This is just shorthand for
module.name_mapper='^\(.*\)\.EXTENSION$' -> 'TEMPLATE'
)
For example:
module.name_mapper.extension='css' -> '<PROJECT_ROOT>/CSSFlowStub.js.flow'
Makes Flow treat require('foo.css')
as if it were require(PROJECT_ROOT + '/CSSFlowStub')
.
Note: You can specify
module.name_mapper.extension
multiple times for different extensions.
module.system
(node|haste)
The module system to use to resolve import
and require
. Haste is used in React Native.
The default is node
.
module.system.node.resolve_dirname
(string)
By default, Flow will look in directories named node_modules
for node modules. You can configure this behavior with this option.
For example, if you do:
[options] module.system.node.resolve_dirname=node_modules module.system.node.resolve_dirname=custom_node_modules
Then Flow will look in directories named node_modules
or custom_node_modules
.
Note: you can specify
module.system.node.resolve_dirname
multiple times
module.use_strict
(boolean)
Set this to true
if you use a transpiler that adds "use strict";
to the top of every module.
The default value is false
.
munge_underscores
(boolean)
Set this to true
to have Flow treat underscore-prefixed class properties and methods as private. This should be used in conjunction with jstransform
’s ES6 class transform, which enforces the same privacy at runtime.
The default value is false
.
no_flowlib
(boolean)
Flow has builtin library definitions. Setting this to true
will tell Flow to ignore the builtin library definitions.
The default value is false
.
server.max_workers
(integer)
The maximum number of workers the Flow server can start. By default, the server will use all available cores.
sharedmemory.dirs
(string)
This affects Linux only.
Flow’s shared memory lives in a memory mapped file. On more modern versions of Linux (3.17+), there is a system call memfd_create
which allows Flow to create the file anonymously and only in memory. However, in older kernels, Flow needs to create a file on the file system. Ideally this file lives on a memory-backed tmpfs. This option lets you decide where that file is created.
By default this option is set to /dev/shm
and /tmp
Note: You can specify
sharedmemory.dirs
multiple times.
sharedmemory.minimum_available
(unsigned integer)
This affects Linux only.
As explained in the sharedmemory.dirs
option’s description, Flow needs to create a file on a filesystem for older kernels. sharedmemory.dirs
specifies a list of locations where the shared memory file can be created. For each location, Flow will check to make sure the filesystem has enough space for the shared memory file. If Flow will likely run out of space, it skips that location and tries the next. This option lets you configure the minimum amount of space needed on a filesystem for shared memory.
By default it is 536870912 (2^29 bytes, which is half a gigabyte).
sharedmemory.dep_table_pow
(unsigned integer)
The 3 largest parts of the shared memory are a dependency table, a hash table, and a heap. While the heap grows and shrinks, the two tables are allocated in full. This option lets you change the size of the dependency table.
Setting this option to X means the table will support up to 2^X elements, which is 16*2^X bytes.
By default, this is set to 17 (Table size is 2^17, which is 2 megabytes)
sharedmemory.hash_table_pow
(unsigned integer)
The 3 largest parts of the shared memory are a dependency table, a hash table, and a heap. While the heap grows and shrinks, the two tables are allocated in full. This option lets you change the size of the hash table.
Setting this option to X means the table will support up to 2^X elements, which is 16*2^X bytes.
By default, this is set to 19 (Table size is 2^19, which is 8 megabytes)
sharedmemory.log_level
(unsigned integer)
Setting this to 1 will cause Flow to output some stats about the data that is serialized into and deserialized out of shared memory.
By default this is 0.
strip_root
(boolean)
≤0.48 Obsolete. Set this to true
to always strip the root directory from file paths in error messages when using --json
, --from emacs
, and --from vim
. Do not use this option. Instead, pass the command line flag --strip-root
.
By default this is false
.
suppress_comment
(regex)
Defines a magical comment that suppresses any Flow errors on the following line. For example:
suppress_comment= \\(.\\|\n\\)*\\$FlowFixMe
will match a comment like this:
// $FlowFixMe: suppressing this error until we can refactor var x : string = 123;
and suppress the error. If there is no error on the next line (the suppression is unnecessary), an “Unused suppression” warning will be shown instead.
If no suppression comments are specified in your config, Flow will apply one default: // $FlowFixMe
.
Note: You can specify
suppress_comment
multiple times. If you do define anysuppress_comment
s, the built-in$FlowFixMe
suppression will be erased in favor of the regexps you specify. If you wish to use$FlowFixMe
with some additional custom suppression comments, you must manually specify\\(.\\|\n\\)*\\$FlowFixMe
in your custom list of suppressions.
suppress_type
(string)
This option lets you alias any
with a given string. This is useful for explaining why you’re using any
. For example, let’s say you sometimes want to sometimes use any
to suppress an error and sometimes to mark a TODO. Your code might look like
var myString: any = 1 + 1; var myBoolean: any = 1 + 1;
If you add the following to your configuration:
[options] suppress_type=$FlowFixMe suppress_type=$FlowTODO
You can update your code to the more readable:
var myString: $FlowFixMe = 1 + 1; var myBoolean: $FlowTODO = 1 + 1;
Note: You can specify
suppress_type
multiple times.
temp_dir
(string)
Tell Flow which directory to use as a temp directory. Can be overridden with the command line flag --temp-dir
.
The default value is /tmp/flow
.
traces
(integer)
Enables traces on all error output (showing additional details about the flow of types through the system), to the depth specified. This can be very expensive, so is disabled by default.
© 2013–present Facebook Inc.
Licensed under the MIT License.
https://flow.org/en/docs/config/options