.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
以檢查陣列散佈語法僅用於陣列,而不是任意可迭代物件(例如 Map
或 Set
)。如果您使用 鬆散模式 將程式碼轉換為 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 版中,此旗標必須明確設定為
true
或false
。 - 從 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
用於解析 import
和 require
的模組系統。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"
欄位。
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_modules
或 custom_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}
在上述範例中,如果選項為 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
類型:忽略 | 警告
設定為 忽略
以指示 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.exports
和exports
別名的陳述只能顯示為頂層陳述。 - 從檔案匯出的來源部分需要加上註解,除非其類型可以輕易推論(例如匯出的表達式是數字文字)。這是類型優先模式正常運作的必要條件。如果未正確註解匯出,會產生
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
只會報告 dirA
和 dirB
下檔案的匯出相關錯誤。此選項需要將 well_formed_exports
設為 true
。
此選項的目的是協助準備程式碼庫以供 Flow 類型優先模式使用。
在 v0.125.0 和 v0.127.0 版本之間,此選項的名稱是 well_formed_exports.whitelist
。