跳至主要內容

.flowconfig [選項]

.flowconfig 檔案中的 [選項] 區段可以包含多個形式為 key-value 的鍵值對

[options]
keyA=valueA
keyB=valueB

省略的任何選項都將使用其預設值。某些選項可以使用命令列旗標覆寫。

可用選項

all

類型:布林值

將此設定為 true 以檢查所有檔案,而不仅仅是那些带有 @flow 的檔案。

all 的預設值為 false

autoimports 0.143.0

類型:布林值

啟用後,IDE 自動完成會建議其他檔案的匯出,並自動插入必要的 import 陳述式。對於未定義的變數,還會提供「快速修正」程式碼動作,建議匹配的匯入。

autoimports 的預設值為 true,自 Flow v0.155.0 起。

babel_loose_array_spread

類型:布林值

將此設定為 true 以檢查陣列散佈語法僅用於陣列,而不是任意可迭代物件(例如 MapSet)。如果您使用 鬆散模式 將程式碼轉換為 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

類型:布林值

將此設定為 true 以在 Flow 忙碌於檢查您的專案時,將表情符號新增至狀態訊息中。

emoji 的預設值為 false

enums

類型:布林值

將此設定為 true 以啟用 Flow Enums。除了啟用 .flowconfig 選項之外,還需要執行 其他步驟

enums 的預設值為 false

exact_by_default

類型:布林值

設定為 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 版中,此旗標必須明確設定為 truefalse
  • 從 0.202 版開始,預設值為 true

您可以在我們的部落格文章中閱讀有關此變更的更多資訊,主題為 預設為精確的物件類型,預設為精確的

experimental.const_params

類型:布林值

將此設定為 true 會讓 Flow 將所有函式參數視為 const 繫結。重新指定參數會產生錯誤,這讓 Flow 可以更保守地進行精煉。

預設值為 false

include_warnings

類型:布林值

將此設定為 true 會讓 Flow 指令將警告包含在錯誤輸出中。預設情況下,警告會在 CLI 中隱藏,以避免主控台訊息過多。(IDE 是顯示警告的更好介面。)

預設值為 false

lazy_mode

類型:布林值

有關懶惰模式的更多資訊,請參閱 懶惰模式文件

.flowconfig 中設定 lazy_mode 會讓該根目錄的新 Flow 伺服器使用延遲模式(如果設為 false,則不使用延遲模式)。可以使用 --lazy-mode 旗標從 CLI 覆寫此選項。

預設值為 false

max_header_tokens

類型:integer

Flow 嘗試避免剖析非 Flow 檔案。這表示 Flow 需要開始對檔案進行詞法分析,以查看其中是否有 @flow@noflow。此選項可讓您設定 Flow 在決定沒有相關文件區塊之前,會對檔案進行多少詞法分析。

  • @flow@noflow 皆無 - 使用不允許 Flow 語法的 Flow 剖析此檔案,且不進行類型檢查。
  • @flow - 使用允許 Flow 語法的 Flow 剖析此檔案,且進行類型檢查。
  • @noflow - 使用允許 Flow 語法的 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

類型:布林值

將此設定為 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

類型:字串 -> 字串

指定要比對的檔案副檔名,以及取代的模組名稱,以 -> 分隔。

注意:這只是 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

用於解析 importrequire 的模組系統。Haste 模式由 Meta 使用。

預設為 node

module.system.node.main_field

類型:字串

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

類型:字串

預設情況下,Flow 會在名為 node_modules 的目錄中尋找節點模組。您可以使用此選項設定此行為。

例如,如果您執行

[options]
module.system.node.resolve_dirname=node_modules
module.system.node.resolve_dirname=custom_node_modules

然後 Flow 會在名為 node_modulescustom_node_modules 的目錄中尋找。

注意:您可以多次指定 module.system.node.resolve_dirname

module.use_strict

類型:布林值

如果您使用會在每個模組最上方加入 "use strict"; 的轉譯器,請將此設定為 true

預設值為 false

munge_underscores

類型:布林值

將此設定為 true,讓 Flow 將底線開頭的類別屬性和方法視為私有。這應該與 jstransform 的 ES6 類別轉換 搭配使用,後者在執行階段強制執行相同的私密性。

預設值為 false

no_flowlib

類型:布林值

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 個最大部分是相依性表格、雜湊表格和堆積。堆積會增長和縮小,而兩個表格會全部配置。這個選項讓您可以變更雜湊表格的大小。

將此選項設定為 X 表示表格將支援多達 2^X 個元素,也就是 16*2^X 位元組。

預設情況下,這設定為 19(表格大小為 2^19,也就是 8 MB)

sharedmemory.heap_size

類型:無符號整數

這個選項設定共享堆積的最大可能大小。您很可能不需要設定這個選項,因為它不會真正影響 Flow 使用多少 RSS。但是,如果您正在處理龐大的程式碼庫,您可能會在初始化後看到以下錯誤:「堆積初始化大小太接近最大堆積大小;GC 永遠不會觸發!」在這種情況下,您可能需要增加堆積的大小。

預設情況下,這設定為 26843545600(25 * 2^30 位元組,也就是 25 GiB)

suppress_type

類型:字串

這個選項讓您可以使用指定的字串建立 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

類型:布林值

catch 變數的預設類型從 any 變更為 mixed。例如:

1try {2} catch (e) {3}

在上述範例中,如果選項為 truecatch 會被設定為 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

類型:忽略 | 警告

設定為 忽略 以指示 Flow 應忽略裝飾器。

此選項的預設值為 警告,因為此提案仍處於非常早期的階段,因此在使用時會發出警告。

esproposal.export_star_as 0.148

類型:enable | ignore | warn

設定為 啟用 以指示 Flow 應支援 leebyron 的提案 中的 export * as 語法。

您也可以設定為 忽略 以指示 Flow 應僅忽略語法。此選項的預設值為 警告,因為此提案仍處於非常早期的階段,因此在使用時會發出警告。

esproposal.optional_chaining 0.148

類型:enable | ignore | warn

設定為 啟用 以指示 Flow 應支援使用 可選鏈接,依照待處理規範。

您也可以設定為 忽略 以指示 Flow 應僅忽略語法。

此選項的預設值為 警告,因為此提案仍處於非常早期的階段,因此在使用時會發出警告。

esproposal.nullish_coalescing 0.148

類型:enable | ignore | warn

設定為 啟用 以指示 Flow 應支援使用 空值合併,依照待處理規範。

您也可以設定為 忽略 以指示 Flow 應僅忽略語法。

此選項的預設值為 警告,因為此提案仍處於非常早期的階段,因此在使用時會發出警告。

inference_mode 0.184.0 0.202.0

類型:傳統 | 約束寫入

將此設定為 約束寫入 將啟用約束寫入推論模式。

如需更多資訊,請參閱 變數宣告文件

預設值為 傳統

log.file

類型:字串

記錄檔路徑(預設為 /tmp/flow/<escaped root path>.log)。

sharedmemory.dirs

類型:字串

這僅影響 Linux。

Flow 的共用記憶體存在於記憶體對應檔案中。在較新的 Linux 版本 (3.17+) 中,有一個系統呼叫 memfd_create,讓 Flow 能匿名建立檔案,且僅在記憶體中。然而,在較舊的 kernel 中,Flow 需要在檔案系統中建立檔案。理想上,這個檔案存在於記憶體備份的 tmpfs 中。這個選項讓您決定建立檔案的位置。

預設情況下,這個選項設定為 /dev/shm/tmp

注意:您可以多次指定 sharedmemory.dirs

sharedmemory.minimum_available

類型:無符號整數

這僅影響 Linux。

如同在 sharedmemory.dirs 選項的說明中所解釋的,Flow 需要在較舊的 kernel 中建立檔案系統上的檔案。sharedmemory.dirs 指定可建立共用記憶體檔案的位置清單。對於每個位置,Flow 會檢查以確保檔案系統有足夠的空間來存放共用記憶體檔案。如果 Flow 可能會用完空間,它會略過該位置並嘗試下一個位置。這個選項讓您能設定共用記憶體在檔案系統上所需的最小空間量。

預設值為 536870912 (2^29 位元組,也就是 512 MB)。

strip_root 0.48

類型:布林值

已過時。當使用 --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 將會套用一個預設值:// $FlowFixMe

注意:您可以多次指定 suppress_comment。如果您定義了任何 suppress_comment,內建的 $FlowFixMe 抑制將會被您指定的正規表示式取代。如果您想要將 $FlowFixMe 與一些額外的自訂抑制註解一起使用,您必須在您的自訂抑制清單中手動指定 \\(.\\|\n\\)*\\$FlowFixMe

注意:在 v0.127.0 版本中,已移除指定抑制註解語法的選項。$FlowFixMe$FlowIssue$FlowExpectedError$FlowIgnore 成為唯一的標準抑制。

temp_dir

類型:字串

告訴 Flow 使用哪個目錄作為暫存目錄。可以使用命令列旗標 --temp-dir 覆寫。

預設值為 /tmp/flow

types_first 0.125.0 0.142

類型:布林值

有關 types-first 模式的詳細資訊,請參閱 types-first 文件

Flow 建立中間產出,以表示模組簽章,因為它們已檢查過。如果此選項設定為 false,則這些產出將使用推論的類型資訊建立。如果此選項設定為 true,則它們將使用模組邊界的類型註解建立。

types_first 的預設值為 true(自 0.134 版本起)。

well_formed_exports 0.125.0 0.142

類型:布林值

對檔案匯出強制執行下列限制

  • 操作 module.exportsexports 別名的陳述只能顯示為頂層陳述。
  • 從檔案匯出的來源部分需要加上註解,除非其類型可以輕易推論(例如匯出的表達式是數字文字)。這是類型優先模式正常運作的必要條件。如果未正確註解匯出,會產生 signature-verification-failure 錯誤。

此選項預設設為 true,因為 types_first 暗示了這一點,但升級專案從傳統模式到類型優先模式時,此選項本身也很有用。

well_formed_exports.includes 0.128.0 0.142

類型:字串

well_formed_exports 需求的範圍限制為此專案的特定目錄。例如

well_formed_exports=true
well_formed_exports.includes=<PROJECT_ROOT>/dirA
well_formed_exports.includes=<PROJECT_ROOT>/dirB

只會報告 dirAdirB 下檔案的匯出相關錯誤。此選項需要將 well_formed_exports 設為 true

此選項的目的是協助準備程式碼庫以供 Flow 類型優先模式使用。

在 v0.125.0 和 v0.127.0 版本之間,此選項的名稱是 well_formed_exports.whitelist