メインコンテンツへスキップ

.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

配列のスプレッド構文が、配列だけでなく、任意のイテラブル(MapSet など)でも使用されているかどうかをチェックするには、これを 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

レイジーモードの詳細については、レイジーモードのドキュメントを参照してください。

.flowconfiglazy_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

dirAdirB の下のファイルでのみエクスポート関連のエラーを報告します。このオプションを使用するには、well_formed_exportstrue に設定する必要があります。

このオプションの目的は、Flow types-firstモードに向けてコードベースを準備するのに役立つことです。

バージョンv0.125.0からv0.127.0の間、このオプションは well_formed_exports.whitelist という名前でした。