設定(.yarnrc.yml)
Yarnrc 檔案(命名為此是因為它們必須稱為 .yarnrc.yml
)是您將能夠設定 Yarn 內部設定的地方。雖然 Yarn 會自動在父目錄中找到它們,但通常應將它們保留在專案的根目錄(通常是您的存放庫)。從 v2 開始,它們必須以有效的 Yaml 編寫,並具有正確的副檔名(僅將檔案命名為 .yarnrc
是不行的)。
在定義值時,可以使用 ${NAME}
語法從設定定義中存取環境變數。預設情況下,Yarn 會要求變數存在,但可以使用 ${NAME-fallback}
(如果未設定 NAME
,將傳回 fallback
)或 ${NAME:-fallback}
(如果未設定 NAME
或為空字串,將傳回 fallback
)來關閉此功能。
最後,請注意大多數設定也可以透過環境變數定義(至少對於較簡單的設定;目前不支援陣列和物件)。若要執行此操作,只需加上名稱前綴並以蛇形大小寫寫入:YARN_CACHE_FOLDER
將設定快取資料夾(此類值將覆寫 RC 檔案中可能已定義的任何值 - 請謹慎使用)。
cacheFolder
下載的套件儲存在系統上的路徑。
它們將被正規化、壓縮,並以具有標準化名稱的 zip 檔案形式儲存。快取被認為相對安全,可以由多個專案共用,即使多個 Yarn 執行個體同時在不同的專案上執行。若要設定全域快取資料夾,您應該改用 enableGlobalCache
。
cacheMigrationMode
Yarn 在偵測到快取項目過期時應遵循的行為。
快取條目是否過時取決於它是否已由 Yarn 的較早版本建立並進行校驗,或在不同的壓縮設定下建立。可能的行為是
- 如果為
required-only
,它會繼續按原樣使用檔案,除非產生它的版本明顯太舊。 - 如果為
match-spec
,如果壓縮層級已變更,它也會重新建立檔案。 - 如果為
always
(預設值),它會始終重新產生快取檔案,以便它們使用目前的快取版本。
httpsCaFilePath
包含一個或多個憑證授權簽署憑證的檔案路徑。
changesetBaseRefs
Yarn 在需要偵測變更時,會用來與您的分支進行比較的 Git 參照清單。
支援 Git 分支、標籤和提交。預設組態會與 master、origin/master、upstream/master、main、origin/main 和 upstream/main 進行比較。
changesetIgnorePatterns
將從變更偵測中排除的檔案 glob 模式陣列。
與專案根目錄相比,符合下列模式(以相對路徑表示)的檔案,將會被每個檢查檔案是否與基礎參照相比已變更的指令所忽略(這包括 yarn version check
和 yarn workspaces foreach --since
)。
checksumBehavior
Yarn 在偵測到快取條目的校驗碼與預期不同時應遵循的行為。
可能的行為是
- 如果為
throw
(預設值),Yarn 會擲回例外。 - 如果為
update
,鎖定檔會更新為與快取校驗碼相符。 - 如果為
reset
,快取條目會被清除並重新擷取。 - 如果為
ignore
,不會發生任何事,Yarn 會略過檢查。
cloneConcurrency
Yarn 同時執行 `git clone` 作業的數量。
預設限制為 2 個同時的 clone 作業。
compressionLevel
用於 zip 檔案的壓縮層級
可能的值從 `0`(「無壓縮,較快」)到 `9`(「重度壓縮,較慢」)。`mixed` 值是 `9` 的變體,其中如果 gzip 額外開銷會超過大小增益,則檔案會儲存為未壓縮。
預設值為 `0`,這通常會安裝得快很多。建議使用零安裝的專案保持這種方式,因為實驗顯示 Git 儲存未壓縮的套件檔案庫比 gzip 壓縮的檔案庫更有效率。
constraintsPath
限制檔案路徑。
這只適用於 Prolog 限制,而 Prolog 限制已被棄用。JavaScript 限制將永遠從 `yarn.config.cjs` 檔案讀取。
預設語言名稱
當套件沒有提供任何見解時,應使用的預設語言模式。
這是一項內部設定,除非您真的知道自己在做什麼,否則不應觸碰。
預設通訊協定
當相依性範圍為純 semver 範圍時,應使用的預設通訊協定。
這是一項內部設定,除非您真的知道自己在做什麼,否則不應觸碰。
預設 Semver 範圍字首
yarn add
和類似指令建立的 semver 範圍中使用的預設字首。
可能的值為 "^"
(預設值)、"~"
或 ""
。
遞延版本資料夾
儲存版本控制檔案的資料夾。
啟用色彩
定義是否允許在標準輸出中使用色彩。
預設值是檢查終端機功能,但您可以手動覆寫為 true
或 false
。
啟用約束檢查
定義是否應在每次安裝時執行約束。
如果為 true,Yarn 會在完成安裝後立即執行您的約束。這可能有助於縮短回饋迴圈延遲,因為它可以在 CI 報告錯誤之前很早就發現錯誤。
啟用全域快取
定義是否應在所有本機專案之間共用快取。
如果為 true(預設值),Yarn 會將快取檔案儲存在位於 globalFolder
內的資料夾中,而不是遵循 cacheFolder
。
啟用強化模式
定義 Yarn 是否應嘗試檢查惡意變更。
如果為 true,Yarn 會查詢遠端登錄檔,以驗證鎖定檔內容是否與遠端資訊相符。這些檢查會使安裝速度變慢,因此您只應在您信任圈子以外的使用者管理的分支上執行這些檢查。
Yarn 會自動在 GitHub 的公開儲存庫中啟用 pull request 的強化模式。如果您想要停用它,請在您的 yarnrc 檔案中明確地將它設定為 false
。
enableHyperlinks
定義是否允許在標準輸出中使用超連結。
預設值是檢查終端機功能,但您可以手動覆寫為 true
或 false
。
enableImmutableCache
定義是否允許新增/移除快取中的檔案。
如果為 true,Yarn 將拒絕以任何方式變更快取,無論是新增檔案或移除檔案,並且會中斷安裝,而不是讓它發生。
enableImmutableInstalls
定義是否允許新增/移除鎖定檔案中的項目。
如果為 true(CI 上的預設值),Yarn 將拒絕以任何方式變更鎖定檔案,無論是新增或移除新項目。其他檔案可透過 immutablePatterns
設定新增到檢查清單中。
enableInlineBuilds
定義是否直接在終端機中列印建置輸出。
如果為 true(CI 環境上的預設值),Yarn 將直接在終端機中列印建置輸出,而不是將其緩衝在外部日誌檔案中。請注意,預設情況下,Yarn 將嘗試在支援的 CI 提供者上使用可收合的終端機序列,以使輸出更易於閱讀。
enableInlineHunks
定義是否直接在終端機中列印修補程式塊。
如果為 true,Yarn 將列印任何無法成功套用至終端機的修補程式區段(塊)。
enableMessageNames
定義是否在每列印的行之前加上訊息名稱。
如果為 true,Yarn 會在大部分訊息前加上適合搜尋引擎的代碼,如果您的終端機允許的話,還會加上超連結支援。
enableMirror
定義是否將本機快取項目鏡射到全域快取中。
如果為 true(預設值),Yarn 會使用全域資料夾作為網路與實際快取之間的中介。只有在 enableGlobalCache
明確設定為 false
時,這才有用,否則快取項目會持續儲存在全域快取中,無論如何。
enableNetwork
定義是否允許遠端網路請求。
如果為 false,Yarn 本身永遠不會對網路發出任何請求,並會擲回例外,而不是讓它發生。這對於 CI 來說是一個非常有用的設定,CI 通常希望確保它們不會錯誤地從網路載入其相依項。
enableOfflineMode
定義 Yarn 是否應僅從其快取中讀取套件的元資料
如果為 true,Yarn 會用從其本機快取中讀取的資料取代任何網路請求,即使它們包含舊資訊。這在沒有網路存取權限的環境(火車、飛機等)中執行本機工作時很有用,因為您至少可以利用過去在同一台機器上安裝的套件。
由於這個設定會導致使用過期的資料,建議將其設定為環境變數(在您的終端機中執行 export YARN_ENABLE_OFFLINE_MODE=1
),而不是將其新增到您的 .yarnrc.yml
檔案中,以供目前的階段使用。
enableProgressBars
定義是否應顯示動畫進度條。
如果為 true(CI 環境以外的預設值),Yarn 會為執行時間長的事件顯示進度條。
enableScripts
如果為 false,Yarn 在安裝專案時不會執行第三方套件的 postinstall
腳本(工作空間仍會看到其 postinstall 腳本經過評估,因為如果您在其中執行安裝,則假設它們是安全的)。
請注意,您還可以透過使用 dependenciesMeta
來個別停用套件中的腳本,或透過結合 enableScripts
和 dependenciesMeta
來重新啟用特定腳本。
enableStrictSsl
定義 SSL 錯誤是否應導致要求失敗。
如果為 false,則會忽略 SSL 憑證錯誤
enableTelemetry
定義是否應傳送匿名遙測資料。
如果為 true(CI 環境以外的預設值),Yarn 會定期將匿名資料傳送至我們的伺服器,追蹤一些使用資訊,例如專案中的相依項數量、您執行了多少次安裝等。
請參閱 遙測 頁面以取得關於此程序的更多詳細資訊。
enableTimers
定義是否列印執行每個子步驟所花費的時間。
如果為 false,Yarn 在執行各種命令時不會列印執行每個子步驟所花費的時間。這僅在測試目的時需要,當您希望每個執行結果與前一個執行結果完全相同。
enableTransparentWorkspaces
定義純粹的 semver 範圍是否應允許工作區解析。
如果為 false,Yarn 僅因為其版本符合 semver 範圍而連結工作區。停用此設定需要所有工作區使用明確的 workspace:
協定彼此參照。
此設定通常僅在您的專案需要使用已發佈版本才能建置新版本時需要(例如 Babel,它依賴於最新的穩定版本來建置未來的版本)。
globalFolder
儲存系統中所有全域檔案的路徑。
各種檔案會儲存在那裡:全域快取、元資料快取等
httpProxy
執行 HTTP 要求時使用的 Proxy。
目前僅支援 HTTP Proxy。
httpRetry
失敗的 HTTP 要求重試前等待的時間(秒)。
httpTimeout
取消待處理 HTTP 要求前等待的時間(毫秒)。
httpsCertFilePath
包含 PEM 格式憑證鏈的文件路徑。
httpsKeyFilePath
包含 PEM 格式私鑰的文件路徑。
httpsProxy
執行 HTTPS 要求時使用的 Proxy。
目前僅支援 HTTP Proxy。
ignorePath
定義是否應遵守 yarnPath
。
如果為 true,則無論執行哪個 Yarn 版本,都將繼續執行,而不是查看 yarnPath
的值來決定。
immutablePatterns
如果設定 enableImmutableInstalls
,則其內容不允許變更的文件模式陣列。
initScope
透過 init
指令建立套件時使用的範圍。
initFields
透過 init
指令建立套件時要設定的額外欄位。
injectEnvironmentFiles
將注入到 Yarn 衍生的任何子程序中的 .env 檔案陣列。
預設情況下,Yarn 會自動注入儲存在 .env.yarn
檔案中的變數,但您可以使用此設定來變更此行為。
請注意,在路徑末端加上問號會讓 Yarn 在檔案遺失時不拋出錯誤,這在宣告本機設定檔時可能會派上用場。
installStatePath
安裝狀態將會持續存在的路徑。
安裝狀態檔案包含許多關於專案的快取資訊。它僅用於最佳化目的,若遺失將會重新建立(您不需要將它加入 Git)。
logFilters
變更發出訊息的記錄層級。
這可以用於隱藏特定訊息,或讓它們更顯著。在此定義的規則接受依名稱或原始內容過濾訊息。
logFilters.code
比對所有具有給定代碼的訊息。
logFilters.level
套用至比對訊息的新記錄層級。如果您希望完全隱藏這些訊息,請使用 discard
。
logFilters.text
比對內容與指定文字完全相符的訊息。
如果訊息同時符合基於 code
和 text
的篩選條件,則基於 text
的篩選條件將優先於基於 code
的篩選條件。
logFilters.level
套用至比對訊息的新記錄層級。如果您希望完全隱藏這些訊息,請使用 discard
。
logFilters.pattern
比對內容與指定 glob 模式相符的訊息。
如果訊息同時符合基於 pattern
和 code
的篩選條件,則基於 pattern
的篩選條件將優先於其他篩選條件。模式可透過使用優先於 pattern
的 text
篩選條件,逐一覆寫。
logFilters.level
套用至比對訊息的新記錄層級。如果您希望完全隱藏這些訊息,請使用 discard
。
networkConcurrency
允許同時執行之 HTTP 要求數量。
我們預設為 50 個同時執行要求,但當在無法處理大量流量的代理伺服器後方工作時,可能需要進一步限制。
networkSettings
每個主機名的其他網路設定
nmHoistingLimits
可以吊掛套件的最高點。
取代之前的 nohoist
設定。可能的值為
- 如果為
none
(預設值),套件會根據一般規則吊掛。 - 如果為
workspaces
,套件不會吊掛到依賴它們的工作空間之外。 - 如果為
dependencies
,傳遞依賴項也不會吊掛到您的直接依賴項之外。
此設定可以使用 installConfig.hoistingLimits
欄位針對每個工作空間個別覆寫。
nmSelfReferences
定義工作空間是否允許需要自己。
如果為 false,Yarn 在使用 nodeLinker: node-modules
時不會建立自參考符號連結。此設定可以使用 installConfig.selfReferences
欄位針對每個工作空間個別覆寫。
nmMode
定義如何將檔案複製到其目標目的地。
可能的值為
- 如果為
classic
,會執行一般複製或複製作業。 - 如果為
hardlinks-global
,會使用到全球內容可尋址儲存體的硬連結。 - 如果為
hardlinks-local
,只會在同一個專案中的類似套件之間建立硬連結。
為了與生態系統相容,預設值為 classic
。
nodeLinker
定義如何安裝 Node 套件。
Yarn 支援三種方式安裝專案的相依性,根據 nodeLinker
設定。可能的數值為
- 如果為
pnp
,將會產生單一的 Node.js 載入器檔案。 - 如果為
pnpm
,將會使用符號連結和硬連結至全域內容可尋址儲存,建立node-modules
。 - 如果為
node-modules
,將會建立一個常規的node_modules
資料夾,就像 Yarn Classic 或 npm 一樣。
winLinkType
定義在 Windows 上建立連結時,是否使用連接點或符號連結。
可能的值為
- 如果為
junctions
,Yarn 會在將工作區連結到node_modules
目錄時使用 Windows 連接點,這些路徑總是絕對路徑。 - 如果為
symlinks
,Yarn 會使用符號連結,它會使用相對路徑,並且與 Yarn 在非 Windows 平台上的行為一致。
符號連結較佳,但它們需要執行 Yarn 的 Windows 使用者具有 建立符號連結
權限。因此,我們預設使用連接點。
npmAlwaysAuth
定義在查詢 npm 註冊表時,是否總是傳送驗證憑證。
如果為 true,在傳送請求至註冊表時,將會總是傳送驗證憑證。除非您將註冊表設定為參考私人 npm 鏡像,否則不應需要此設定。
npmAuditRegistry
定義在稽核相依性時要使用的註冊表。
如果未明確設定,將會使用 npmRegistryServer
的值。
npmAuthIdent
定義在存取註冊表時預設要使用的驗證憑證。
取代先前的 _auth
設定。由於它需要將未加密的值儲存在組態中,因此在可能的情況下應優先使用 npmAuthToken
。
npmAuthToken
定義存取您的登錄時要使用的預設驗證令牌。
取代先前的 _authToken
設定。如果您使用 npmScopes
定義多個登錄,則 npmRegistries
詞典允許您逐個登錄覆寫這些憑證。
npmPublishAccess
定義發佈套件至 npm 登錄時要使用的預設存取權。
有效值為 public
和 restricted
,但 restricted
通常需要註冊付費方案(這取決於您使用的登錄)。可以使用 publishConfig.access
欄位逐個套件覆寫。
npmAuditExcludePackages
要從 yarn npm audit
排除的套件的建議 ID 全域模式陣列。
npmAuditIgnoreAdvisories
要從 yarn npm audit
結果中忽略的建議 ID 全域模式陣列。
npmPublishRegistry
定義推播套件時要使用的登錄。
如果未明確設定,將使用 npmRegistryServer
的值。由 publishConfig.registry
覆寫。
npmRegistries
逐個登錄的組態。
npmRegistryServer
定義擷取套件時要使用的登錄。
如果您要為不同的範圍定義不同的登錄,請參閱 npmScopes
。若要定義伺服器的驗證機制,請參閱 npmAuthToken
。預設情況下,網址必須使用 HTTPS,但可以將其新增到 unsafeHttpWhitelist
來變更。
npmScopes
每個範圍的登錄設定。
packageExtensions
擴充套件相依項的套件定義;有助於修正第三方問題。
有些套件可能在其相依項方面指定不正確 - 例如缺少一個相依項,導致 Yarn 拒絕存取。packageExtensions
欄位提供一個方式,以額外資訊擴充套件現有的套件定義。如果您使用它,請考慮發送上游 PR,並將您的擴充套件貢獻給 plugin-compat
資料庫。
注意:此欄位用於新增相依項;如果您需要改寫現有的相依項,請改用 resolutions
欄位。
patchFolder
修補檔檔案寫入資料夾。
pnpEnableEsmLoader
定義是否產生 Node.js ESM 載入器。
如果為 true,Yarn 會在 CJS 之上產生一個實驗性質的 ESM 載入器 (.pnp.loader.mjs
)。
pnpEnableInlining
定義是否將 PnP 資料儲存在產生的檔案中。
如果為 false,Yarn 會產生一個額外的 .pnp.data.json
檔案。
pnpFallbackMode
定義是否允許套件依賴內建 PnP 回退機制。
可能的值為
- 如果為
all
,所有套件都可以存取回退中提供的相依性。 - 如果為
dependencies-only
(預設值),相依性可以存取它們,但您的工作空間不行。 - 如果為
none
,沒有套件可以存取它們。
pnpIgnorePatterns
檔案 glob 模式陣列,應強制使用預設 CommonJS 解析度。
符合這些位置的檔案不會被 PnP 涵蓋,並將使用常規 Node.js 解析度演算法。通常只有在您有尚未成為工作空間樹一部分的子專案時才需要。
pnpMode
定義是否嘗試模擬傳統的 node_modules
提升。
可能的值為
- 如果為
strict
(預設值),模組將不被允許需要它們在自己的相依性中未明確列出的套件。 - 如果為
loose
,套件將被允許存取任何其他套件,這些套件會在 1.x 安裝中提升到頂層。
請注意,即使在寬鬆模式下,提升的 require 呼叫也不安全,應避免使用。
pnpShebang
附加到產生的 PnP 載入器的字串。
pnpUnpluggedFolder
儲存已拔除套件的路徑。
雖然 Yarn 會嘗試直接從 zip 檔案中參照並載入套件,但並非總是可行。在這些情況下,Yarn 會將檔案解壓縮到已拔除資料夾。
preferDeferredVersions
定義是否預設使用延遲版本控制。
如果為 true,則在執行 yarn version
系列指令時預設使用延遲版本控制。
preferInteractive
定義是否預設使用互動式提示。
如果為 true,當某些動作可以透過消除歧義而得到改善時,Yarn 會要求您提供指導。啟用此設定也會解鎖一些功能(例如,如果相關,yarn add
指令會建議重複使用與其他工作區相同的依賴項)。
preferReuse
定義在將依賴項新增到套件時,是否重複使用最常見的依賴項範圍。
如果為 true,yarn add
會嘗試重複使用其他工作區中最常見的依賴項範圍。
preferTruncatedLines
定義是否截斷超出終端機大小的行。
如果為 true,Yarn 會截斷超出終端機大小的行。如果停用進度條,則永遠不會截斷行。
progressBarStyle
要使用的進度條樣式。
supportedArchitectures
Yarn 應為其安裝套件的系統。
supportedArchitectures.os
要涵蓋的操作系統清單。
supportedArchitectures.cpu
要涵蓋的 CPU 架構清單。
請參閱 https://node.dev.org.tw/docs/latest/api/process.html#processarch,以取得 Node.js 支援的架構
supportedArchitectures.libc
要涵蓋的標準 C 函式庫清單。
taskPoolConcurrency
並行處理繁重任務的最大數量。
我們預設為平台並行性,但對於某些 CI,os.cpus
可能不會回報準確的值,並可能讓其容器不堪負荷。
workerPoolMode
繁重任務的執行策略。
預設情況下,執行繁重任務(例如將 tgz 檔案轉換為 zip)時會使用工作執行緒。此設定可用於停用工作執行緒,並使用常規的執行緒內非同步處理。
telemetryInterval
定義兩個遙測事件之間的最小時間間隔(以天為單位)。
預設情況下,我們每週只會傳送一個請求,因此我們無法以較低的粒度追蹤您的使用情況。
telemetryUserId
使用者定義的唯一 ID,用於與遙測事件一起傳送。
預設設定從不將唯一 ID 指定給任何人,因此我們無法得知哪些資料來自哪個專案。此設定可用於強制將使用者 ID 傳送到我們的遙測伺服器。
坦白說,它只在一些非常特定的使用案例中才有用。例如,我們在 Yarn 儲存庫中使用它,以從公開儀表板中排除我們自己的使用情況(由於我們在此處執行 Yarn 的頻率遠高於其他任何地方,因此產生的資料會產生偏差)。
tsEnableAutoTypes
定義是否自動安裝 @types 相依性。
如果為 true,Yarn 會在執行 yarn add
時自動新增 @types
相依性,而這些套件不會提供它們自己的類型(根據 Algolia npm 資料庫的報告)。如果您在專案根目錄或目前的 Workspace 中有 tsconfig.json 檔案,則會預設啟用此行為。
unsafeHttpWhitelist
允許使用 HTTP 協定的主機名 glob 模式陣列。
virtualFolder
儲存虛擬套件的路徑。
由於 Yarn 安裝列出對等相依性的套件的方式具有特殊性,因此有些套件會對應到多個實際上不存在於檔案系統中的虛擬目錄。此設定會告訴 Yarn 將它們放在哪裡。請注意,資料夾名稱必須為 __virtual__
。
yarnPath
使用 Yarn 二進位檔的路徑,而非全域二進位檔。
對於 rc 檔案涵蓋的目錄中執行的任何指令,此二進位檔將執行,而非任何其他二進位檔(包括全域二進位檔)。如果檔案副檔名以 .js
結尾,則需要它,否則會產生它。
yarnPath
設定過去是專案中安裝 Yarn 的首選方式,但我們現在建議在大部分情況下使用 Corepack。