.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 という名前でした。