.flowconfig [options]
.flowconfig
ファイルの [options]
セクションには、次のような形式のキーと値のペアをいくつか含めることができます。
[options]
keyA=valueA
keyB=valueB
省略されたオプションはデフォルト値を使用します。一部のオプションはコマンドラインフラグで上書きできます。
利用可能なオプション
all
型: boolean
@flow
があるファイルだけでなく、すべてのファイルをチェックするには、これを true
に設定します。
all
のデフォルト値は false
です。
autoimports ≥0.143.0
型: boolean
有効にすると、IDEのオートコンプリートは他のファイルのエクスポートを提案し、必要な import
ステートメントが自動的に挿入されます。また、未定義の変数に対して、一致するインポートを提案する「クイックフィックス」コードアクションも提供されます。
Flow v0.155.0の時点で、autoimports
のデフォルト値は true
です。
babel_loose_array_spread
型: boolean
配列のスプレッド構文が、配列だけでなく、任意のイテラブル(Map
や Set
など)でも使用されているかどうかをチェックするには、これを true
に設定します。これは、looseモードでBabelでコードを変換し、実行時にこの非仕様に準拠した前提を使用している場合に役立ちます。
例:
const set = new Set();
const values = [...set]; // Valid ES2015, but Set is not compatible with $ReadOnlyArray in Babel loose mode
babel_loose_array_spread
のデフォルト値は false
です。
emoji
型: boolean
Flowがプロジェクトのチェックでビジー状態のときに出力するステータスメッセージに絵文字を追加するには、これを true
に設定します。
emoji
のデフォルト値は false
です。
enums
型: boolean
Flow 列挙型を有効にするには、これを true
に設定します。.flowconfig
オプションを有効にするだけでなく、追加の手順が必要です。
enums
のデフォルト値は false
です。
exact_by_default
型: boolean
true
に設定すると (バージョン 0.202 以降のデフォルト)、Flow はオブジェクト型をデフォルトで正確であると解釈します。
1type O1 = {foo: number} // exact2type O2 = {| foo: number |} // exact3type O3 = {foo: number, ...} // inexact
このフラグが false
の場合、Flow は次の動作をします
1type O1 = {foo: number} // inexact2type O2 = {| foo: number |} // exact3type O3 = {foo: number, ...} // inexact
- 開始から Flow バージョン 0.199 までは、フラグのデフォルト値は
false
でした。 - バージョン 0.200 および 0.201 では、フラグは
true
またはfalse
のいずれかに明示的に設定する必要がありました。 - バージョン 0.202 以降では、デフォルト値は
true
です。
この変更の詳細については、デフォルトでデフォルトで正確なオブジェクト型にするに関するブログ記事をお読みください。
experimental.const_params
型: boolean
これを true
に設定すると、Flow はすべての関数パラメータを const バインディングとして扱います。パラメータを再割り当てするとエラーになり、Flow は改良に対して保守的でなくなります。
デフォルト値は false
です。
include_warnings
型: boolean
これを true
に設定すると、Flow コマンドはエラー出力に警告を含めます。警告はコンソールでの出力を避けるために、CLI ではデフォルトで非表示になっています。(IDE は警告を表示するのに最適なインターフェースです。)
デフォルト値は false
です。
lazy_mode
型: boolean
レイジーモードの詳細については、レイジーモードのドキュメントを参照してください。
.flowconfig
で lazy_mode
を設定すると、そのルートの新しい Flow サーバーはレイジーモードを使用するようになります (または、false
に設定されている場合はレイジーモードを使用しない)。このオプションは、--lazy-mode
フラグを使用して CLI から上書きできます。
デフォルト値は false
です。
max_header_tokens
型: integer
Flowは、Flowファイル以外のファイルの解析を避けようとします。これは、Flowがファイルに @flow
または @noflow
があるかどうかを確認するために、ファイルの字句解析を開始する必要があることを意味します。このオプションを使用すると、Flowが関連するドキュメントブロックがないと判断する前に字句解析するファイルの量を構成できます。
@flow
も@noflow
もない - Flow 構文を許可せずにこのファイルを解析し、型チェックをしないでください。@flow
- Flow 構文を許可してこのファイルを解析し、型チェックします。@noflow
- Flow 構文を許可してこのファイルを解析し、型チェックをしないでください。これは、Flow固有の構文をすべて削除することなく、ファイル内のFlowを抑制するためのエスケープハッチとして意図されています。
max_header_tokens
のデフォルト値は 10 です。
module.file_ext
デフォルトでは、Flowは拡張子が .js
、.jsx
、.mjs
、.cjs
および .json
のファイルを探します。このオプションを使用すると、この動作をオーバーライドできます。
たとえば、次の場合
[options]
module.file_ext=.foo
module.file_ext=.bar
Flow は、代わりにファイル拡張子 .foo
と .bar
を探します。
注:
module.file_ext
は複数回指定できます
module.ignore_non_literal_requires
型: boolean
これを true
に設定すると、文字列リテラル以外のものを使って require()
を使用しても、Flow は文句を言わなくなります。
デフォルト値は false
です。
module.name_mapper
型: regex -> string
モジュール名に一致する正規表現と、置換パターンを ->
で区切って指定します。
例:
module.name_mapper='^image![a-zA-Z0-9$_]+$' -> 'ImageStub'
これにより、Flow は require('image!foo.jpg')
を require('ImageStub')
であるかのように扱います。
これらは、OCaml 正規表現です。キャプチャグループを作成するには、\(
と \)
(スラッシュが必要!) を使用します。これは、置換パターンで \1
(最大 \9
) として参照できます。
注:
module.name_mapper
は複数回指定できます
module.name_mapper.extension
型: string -> string
一致するファイル拡張子と、置換モジュール名を ->
で区切って指定します。
注: これは
module.name_mapper='^\(.*\)\.EXTENSION$' -> 'TEMPLATE'
の短縮形にすぎません)
例:
module.name_mapper.extension='css' -> '<PROJECT_ROOT>/CSSFlowStub.js.flow'
Flow は require('foo.css')
を require(PROJECT_ROOT + '/CSSFlowStub')
であるかのように扱います。
注: 異なる拡張子に対して、
module.name_mapper.extension
を複数回指定できます。
module.system
型: node | haste
import
および require
を解決するために使用するモジュールシステム。Haste モードは Meta で使用されます。
デフォルトは node
です。
module.system.node.main_field
型: string
Flow は、モジュールの名前と、そのモジュールを提供するために使用するファイルを特定するために、package.json
ファイルの "name"
および "main"
フィールドを読み取ります。
したがって、Flow が .flowconfig
でこれを見つけた場合
[options]
module.system.node.main_field=foo
module.system.node.main_field=bar
module.system.node.main_field=baz
次に、次のような package.json
に遭遇した場合
{
"name": "kittens",
"main": "main.js",
"bar": "bar.js",
"baz": "baz.js"
}
Flow は bar.js
を使用して "kittens"
モジュールを提供します。
このオプションが指定されていない場合、Flow は常に "main"
フィールドを使用します。
元の動機については、この GitHub の問題を参照してください
module.system.node.resolve_dirname
型: string
デフォルトでは、Flow は node_modules
という名前のディレクトリで node モジュールを探します。このオプションを使用すると、この動作を構成できます。
たとえば、次の場合
[options]
module.system.node.resolve_dirname=node_modules
module.system.node.resolve_dirname=custom_node_modules
Flow は、node_modules
または custom_node_modules
という名前のディレクトリを探します。
注:
module.system.node.resolve_dirname
は複数回指定できます
module.use_strict
型: boolean
トランスパイラを使用していて、すべてのモジュールの先頭に"use strict";
を追加する場合は、これをtrue
に設定してください。
デフォルト値は false
です。
munge_underscores
型: boolean
Flowがアンダースコアで始まるクラスのプロパティとメソッドをプライベートとして扱うようにするには、これをtrue
に設定します。これは、ランタイムで同じプライバシーを強制するjstransform
のES6クラストランスフォームと組み合わせて使用する必要があります。
デフォルト値は false
です。
no_flowlib
型: boolean
Flowには組み込みのライブラリ定義があります。これをtrue
に設定すると、Flowは組み込みのライブラリ定義を無視します。
デフォルト値は false
です。
react.runtime ≥0.123.0
タイプ: automatic | classic
@babel/plugin-transform-react-jsx
でReactの自動ランタイムを使用している場合は、これをautomatic
に設定します。それ以外の場合は、classic
を使用してください。トランスフォームの詳細については、babelのドキュメントを参照してください。
デフォルト値はclassic
です。
server.max_workers
型: integer
Flowサーバーが開始できる最大ワーカー数。デフォルトでは、サーバーは利用可能なすべてのコアを使用します。
sharedmemory.hash_table_pow
タイプ: 符号なし整数
共有メモリの3つの最大の部分は、依存関係テーブル、ハッシュテーブル、およびヒープです。ヒープは拡大縮小しますが、2つのテーブルは完全に割り当てられます。このオプションを使用すると、ハッシュテーブルのサイズを変更できます。
このオプションをXに設定すると、テーブルは最大2^X個の要素をサポートし、これは16*2^Xバイトになります。
デフォルトでは、これは19に設定されています(テーブルサイズは2^19で、8メガバイトです)。
sharedmemory.heap_size
タイプ: 符号なし整数
このオプションは、共有ヒープの最大可能なサイズを構成します。Flowが使用するRSSの量には実際には影響しないため、これを構成する必要はおそらくないでしょう。ただし、大規模なコードベースで作業している場合は、初期化後に次のエラーが表示される可能性があります。「ヒープの初期化サイズが最大ヒープサイズに近すぎます。GCがトリガーされません!」この場合は、ヒープのサイズを増やす必要があるかもしれません。
デフォルトでは、これは26843545600 (25 * 2^30 バイト、つまり25GiB) に設定されています。
suppress_type
型: string
このオプションを使用すると、指定された文字列でany
をエイリアスできます。これは、any
を使用する理由を説明するのに役立ちます。たとえば、エラーを抑制するためにany
を使用したい場合と、TODOをマークしたい場合があります。あなたのコードは次のようになるかもしれません
const myString: any = 1 + 1;
const myBoolean: any = 1 + 1;
構成に次を追加する場合
[options]
suppress_type=$FlowFixMe
suppress_type=$FlowTODO
より読みやすいようにコードを更新できます
const myString: $FlowFixMe = 1 + 1;
const myBoolean: $FlowTODO = 1 + 1;
注:
suppress_type
は複数回指定できます。
traces
型: integer
すべてのエラー出力でトレースを有効にし(システムを介した型の流れに関する追加の詳細を表示)、指定された深さまで表示します。これは非常にコストがかかる可能性があるため、デフォルトでは無効になっています。
use_mixed_in_catch_variables ≥0.201
型: boolean
catch
変数のデフォルトの型をany
からmixed
に変更します。例:
1try {2} catch (e) {3}
上記の例では、オプションがtrue
の場合、catch
には明示的な型注釈がないため、mixed
として型付けされます。
非推奨のオプション
次のオプションは、最新バージョンのFlowには存在しません
esproposal.class_instance_fields ≤0.148
タイプ: enable | ignore | warn
これをwarn
に設定すると、Flowは保留中の仕様に従って、インスタンスクラスフィールドの使用に関する警告を発行することを示します。
これをignore
に設定して、Flowが構文を単に無視する(つまり、Flowはこの構文を使用してクラスのインスタンスのプロパティの存在を示すことはない)ことを示すこともできます。
このオプションのデフォルト値はenable
であり、提案された構文の使用を許可します。
esproposal.class_static_fields ≤0.148
タイプ: enable | ignore | warn
これをwarn
に設定すると、Flowは保留中の仕様に従って、静的クラスフィールドの使用に関する警告を発行することを示します。
これをignore
に設定して、Flowが構文を単に無視する(つまり、Flowはこの構文を使用してクラスの静的プロパティの存在を示すことはない)ことを示すこともできます。
このオプションのデフォルト値はenable
であり、提案された構文の使用を許可します。
esproposal.decorators ≤0.148
タイプ: ignore | warn
これをignore
に設定すると、Flowはデコレーターを無視することを示します。
このオプションのデフォルト値はwarn
であり、この提案はまだ初期段階であるため、使用時に警告を発行します。
esproposal.export_star_as ≤0.148
タイプ: enable | ignore | warn
これをenable
に設定すると、Flowがleebyronの提案からのexport * as
構文をサポートすることを示します。
これをignore
に設定して、Flowが構文を単に無視することを示すこともできます。このオプションのデフォルト値はwarn
であり、この提案はまだ初期段階であるため、使用時に警告を発行します。
esproposal.optional_chaining ≤0.148
タイプ: enable | ignore | warn
これをenable
に設定すると、Flowが保留中の仕様に従ってオプショナルチェイニングの使用をサポートすることを示します。
これをignore
に設定して、Flowが構文を単に無視することを示すこともできます。
このオプションのデフォルト値はwarn
であり、この提案はまだ初期段階であるため、使用時に警告を発行します。
esproposal.nullish_coalescing ≤0.148
タイプ: enable | ignore | warn
これをenable
に設定すると、Flowが保留中の仕様に従ってnullish合体の使用をサポートすることを示します。
これをignore
に設定して、Flowが構文を単に無視することを示すこともできます。
このオプションのデフォルト値はwarn
であり、この提案はまだ初期段階であるため、使用時に警告を発行します。
inference_mode ≥0.184.0 ≤0.202.0
タイプ: classic | constrain-writes
これをconstrain-writes
に設定すると、制約付き書き込み推論モードが有効になります。
詳細については、変数宣言ドキュメントを参照してください。
デフォルト値はclassic
です
log.file
型: string
ログファイルへのパス(デフォルトは/tmp/flow/<エスケープされたルートパス>.log
)。
sharedmemory.dirs
型: string
これはLinuxのみに影響します。
Flowの共有メモリは、メモリマップされたファイルに存在します。より新しいバージョンのLinux(3.17以降)では、Flowがファイルを匿名でメモリ内のみに作成できるシステムコールmemfd_create
があります。ただし、古いカーネルでは、Flowはファイルシステムにファイルを作成する必要があります。理想的には、このファイルはメモリバックアップされたtmpfsに存在します。このオプションを使用すると、そのファイルが作成される場所を決定できます。
デフォルトでは、このオプションは/dev/shm
と/tmp
に設定されています
注:
sharedmemory.dirs
は複数回指定できます。
sharedmemory.minimum_available
タイプ: 符号なし整数
これはLinuxのみに影響します。
sharedmemory.dirs
オプションの説明で説明したように、Flowは古いカーネルのためにファイルシステム上にファイルを作成する必要があります。sharedmemory.dirs
は、共有メモリファイルを作成できる場所のリストを指定します。Flowは各場所で、ファイルシステムに共有メモリファイルに十分なスペースがあることを確認します。Flowがスペースを使い果たす可能性が高い場合は、その場所をスキップして次の場所を試します。このオプションを使用すると、共有メモリに必要なファイルシステム上の最小スペース量を構成できます。
デフォルトでは、536870912 (2^29 バイト、つまり0.5ギガバイト) です。
strip_root ≤0.48
型: boolean
廃止されました。--json
、--from emacs
、および--from vim
を使用する場合に、エラーメッセージのファイルパスからルートディレクトリを常に削除するには、これをtrue
に設定します。このオプションは使用しないでください。代わりに、コマンドラインフラグ--strip-root
を渡してください。
デフォルトでは、これはfalse
です。
suppress_comment ≤0.126
タイプ: regex
次の行のFlowエラーをすべて抑制するマジックコメントを定義します。例:
suppress_comment= \\(.\\|\n\\)*\\$FlowFixMe
このようなコメントに一致します
// $FlowFixMe: suppressing this error until we can refactor
var x : string = 123;
そして、エラーを抑制します。次の行にエラーがない場合(抑制が不要な場合)、「未使用の抑制」警告が表示されます。
設定で抑制コメントが指定されていない場合、Flowは1つのデフォルト(// $FlowFixMe
)を適用します。
注:
suppress_comment
は複数回指定できます。suppress_comment
を定義した場合、組み込みの$FlowFixMe
抑制は、指定した正規表現を優先して削除されます。カスタムの抑制コメントとともに$FlowFixMe
を使用したい場合は、カスタムの抑制リストに\\(.\\|\n\\)*\\$FlowFixMe
を手動で指定する必要があります。
注: v0.127.0 では、抑制コメントの構文を指定するオプションは削除されました。
$FlowFixMe
、$FlowIssue
、$FlowExpectedError
、および$FlowIgnore
が唯一の標準の抑制となりました。
temp_dir
型: string
Flowが一時ディレクトリとして使用するディレクトリを指定します。コマンドラインフラグ --temp-dir
で上書きできます。
デフォルト値は /tmp/flow
です。
types_first ≥0.125.0 ≤0.142
型: boolean
types-firstモードの詳細については、types-firstのドキュメントを参照してください。
Flowは、モジュールのシグネチャを表す中間成果物を、チェック時に作成します。このオプションがfalse
に設定されている場合、これらの成果物は推論された型情報を使用して作成されます。このオプションがtrue
に設定されている場合、それらはモジュール境界の型注釈を使用して作成されます。
types_first
のデフォルト値は true
です(バージョン0.134以降)。
well_formed_exports ≥0.125.0 ≤0.142
型: boolean
ファイルのエクスポートに以下の制限を適用します。
module.exports
およびexports
エイリアスを操作するステートメントは、トップレベルのステートメントとしてのみ表示できます。- ファイルのエクスポートから見えるソースの部分は、型が簡単に推論できない限り(例:エクスポートされた式が数値リテラルである場合)、アノテーションを付ける必要があります。これは、types-firstモードが正しく機能するための要件です。エクスポートに適切なアノテーションを付けることができないと、
signature-verification-failure
が発生します。
このオプションは、types_first
によって暗黙的に指定されているため、デフォルトで true
に設定されていますが、このオプションは、プロジェクトを従来のモードからtypes-firstモードにアップグレードする際に単独で役立ちます。
well_formed_exports.includes ≥0.128.0 ≤0.142
型: string
このプロジェクトの特定のディレクトリに対してのみ、well_formed_exports
の要件の範囲を制限します。例:
well_formed_exports=true
well_formed_exports.includes=<PROJECT_ROOT>/dirA
well_formed_exports.includes=<PROJECT_ROOT>/dirB
dirA
と dirB
の下のファイルでのみエクスポート関連のエラーを報告します。このオプションを使用するには、well_formed_exports
を true
に設定する必要があります。
このオプションの目的は、Flow types-firstモードに向けてコードベースを準備するのに役立つことです。
バージョンv0.125.0からv0.127.0の間、このオプションは well_formed_exports.whitelist
という名前でした。