清單 (package.json)
清單檔案(也稱為 package.json
,因為它們的名稱)包含描述特定套件的唯一設定所需的一切。如果專案使用工作區功能,則專案將包含多個此類清單,因為每個工作區都是透過自己的清單來描述。請注意,這些欄位的預設值可透過 initFields
設定來設定。
name
套件名稱。
用於在應用程式中識別它,特別是在多個工作區之間。名稱的第一部分(這裡是 @scope/
)是選用的,並用作名稱空間)。
version
套件版本。
通常不會對專案有任何影響,除非它是工作區 - 然後其版本必須與指定範圍相符,才能選擇工作區作為解析候選。
packageManager
定義在處理此專案時應使用的套件管理員。
此欄位由 Corepack 和類似工具使用,用於偵測專案中使用的 Yarn 版本,在某種意義上,它與鎖定檔有相同目的,但僅適用於 Yarn 本身。
執行 `yarn set version` 時,Yarn 會自動設定此值。
type
定義如何詮釋 .js
檔案。
Node.js v13.x 選項。可能的值為 commonjs
(預設值)和 module
。Yarn 3+ 在使用 PnP 時會產生 .pnp.cjs
檔案,而與此選項無關。
private
定義套件是否要發布。
如果為 true,則套件會被視為私人套件,而 Yarn 會拒絕發布它,無論情況如何。
license
SPDX 識別碼,定義套件發布的授權條款。
os
此套件可運作的平台組。
安裝時,會將 process.platform()
的值與此組進行比對。如果找不到任何符合的項目,套件定義的任何安裝後指令碼都會被略過。如果套件僅透過 optionalDependencies
項目依賴,則套件根本不會被安裝。
cpu
此套件可運作的 CPU 架構組。
安裝時,會將 process.arch()
的值與此組進行比對。如果找不到任何符合的項目,套件定義的任何安裝後指令碼都會被略過。如果套件僅透過 optionalDependencies
項目依賴,則套件根本不會被安裝。
libc
此套件依賴的 C 標準函式庫集。
安裝時會將主機標準函式庫與此集進行比較。如果找不到任何相符項,套件定義的任何安裝後指令碼都將略過。如果套件完全透過 optionalDependencies
項目依賴,則根本不會安裝套件。
main
透過空識別碼需要套件時,應解析的檔案路徑。
此欄位可以在發佈時透過使用 publishConfig.main
欄位進行修改。
module
在 ES6 相容的套件環境中,透過空識別碼需要套件時,應解析的檔案路徑。
此欄位應視為已棄用,其官方替代方案為 exports
。
languageName
安裝相依項時,選擇要使用的連結器的任意值。
這是內部套件設定,除非您真的知道自己在做什麼,否則不應變更。
bin
透過 yarn run bin-name
和 shell 環境公開的檔案集。
如果設定為字串,二進位值將會是套件名稱(不包括範圍部分)。
腳本
透過 yarn run script-name
或作為生命週期掛鉤公開的腳本組。
Yarn 中的腳本是由 POSIX 類似殼層執行的,它實作了您會想在一行腳本中使用的多數功能。例如,您可以使用 POSIX 語法指定環境變數,而 Yarn 將會讓它在 Linux、OSX 和 Windows 上都能運作。
相依性
相依性組,必須提供給目前套件才能正常運作。
請參閱 通訊協定文件 以取得更多資訊。
optionalDependencies
相依性組,Yarn 僅應在 os/cpu/libc 欄位與主機平台相符時嘗試安裝。
與一般相依性不同,列在 optionalDependencies
中的相依性允許有失敗的 postinstall
步驟 - 事實上,如果 os/cpu/libc 篩選器不涵蓋主機平台,它們甚至不會被安裝。
請注意,optionalDependencies
僅關注套件是否應安裝/建置 - 它仍應可解析,否則無法得知無法擷取套件元資料是故意的還是無意的。
devDependencies
一組相依性,必須提供給目前的套件,才能適當地作為工作區運作。
與一般相依性不同,列在 devDependencies
中的相依性只會在套件作為工作區專案一部分安裝時需要,通常是透過複製專案存放庫,然後在其中執行 yarn install
。
peerDependencies
一組相依性,套件必須從相依性樹中的祖先繼承。
同儕相依性的語意保證,當套件需要相依性時,它會傳回與套件祖先會傳回的完全相同的物件實例。此機制使同儕相依性成為跨多個套件共用單例狀態的最佳方式。
作為延伸,Yarn 支援「具有預設值的同儕相依性」:同時列在 dependencies
和 peerDependencies
欄位中的相依性會先嘗試解決同儕相依性,但如果無法滿足,則會回退到一般相依性。
workspaces
陣列資料夾 glob 模式,參考專案的工作區。
工作區是單一存放庫使用的選用功能,用於將大型專案分割成半獨立的子專案,每個子專案都列出自己的相依性組。workspaces
欄位是 glob 模式的清單,符合所有目錄,這些目錄應成為應用程式的子工作區。請參閱 工作區文件 以取得更多資訊。
dependenciesMeta
影響 dependencies
和 devDependencies
欄位解譯方式的額外設定。
在工作區專案的脈絡中,這些設定大多會影響所有工作區,因此必須在專案的根目錄中指定。除非另有註明,否則如果在工作區中找到 dependenciesMeta
欄位,將會被忽略。
dependenciesMeta.built
定義是否要執行安裝後腳本。
如果為 false,則永遠不會建置套件(拒絕清單)。當 yarnrc 設定 enableScripts
關閉時,此行為會反轉 - 當發生這種情況時,只有將 built
明確設定為 true
的套件才會被建置(允許清單);至於將 built
明確設定為 false
的套件,其建置腳本警告只會降級為簡單的通知。
dependenciesMeta.optional
定義相依性是否為選用。
與 dependenciesMeta
中的大多數其他設定不同,optional
允許在相依性樹狀結構中的任何位置。它與 optionalDependencies
有完全相同的效應 - 事實上,這就是 optionalDependencies
內部編譯的內容。
dependenciesMeta.unplugged
定義套件是否必須拔除。
如果為 true,則指定的套件將在安裝時自動拔除。這只應適用於包含非 JavaScript 語言中腳本的套件(例如 nan
包含 C++ 標頭)。
peerDependenciesMeta
影響 peerDependencies
欄位解譯方式的額外設定。
與 dependenciesMeta
不同,peerDependenciesMeta
允許在依賴樹的任何部分中使用。
peerDependenciesMeta.optional
定義當無法滿足對等依賴項時是否記錄警告。
如果為 true,則套件管理員將把所選的對等依賴項標記為可選,並取消我們發出的任何警告。
resolutions
覆寫特定依賴項的解析度。
此欄位允許您指示 Yarn 使用特定解析度(特定套件版本),而不是解析器通常會選擇的任何內容。這對於強制所有套件使用單一版本的依賴項或回溯修正很有用。解析度金鑰的語法接受一個層級的特殊性,因此以下所有範例都是正確的。
注意:當路徑是相對路徑時,例如可以使用 file:
和 portal:
協定,則會相對於專案的路徑解析。
注意:resolutions
欄位只能設定在專案的根目錄,如果在任何其他工作區使用,將會產生警告。
preferUnplugged
定義套件是否必須拔除。
當 Yarn 嘗試直接從其 zip 檔案中參照並載入套件時,可能無法總是執行。啟發法會嘗試偵測會導致 zip 載入有問題的情況,並改為解壓縮磁碟上的檔案,但由於只是啟發法,因此可能會回報不正確的結果。
preferUnplugged
欄位讓您可以自行定義,作為套件作者,您的套件在儲存為檔案時是否可正常運作。如果設定,它將覆寫預設啟發法。
publishConfig
影響套件發布方式的額外設定。
publishConfig.access
定義發布套件時要使用的存取權。
有效值為 public
和 restricted
,但 restricted
通常需要註冊付費方案(這取決於您使用的登錄檔)。
publishConfig.bin
封裝的 tarball 中使用的封裝 bin
欄位的替換,用於取代主欄位。
publishConfig.browser
封裝的 tarball 中使用的封裝 browser
欄位的替換,用於取代主欄位。
publishConfig.executableFiles
封裝的 tarball 中必須標記為可執行 (+x) 的檔案組。
publishConfig.main
封裝的 tarball 中使用的封裝 main
欄位的替換,用於取代主欄位。
publishConfig.module
封裝的 tarball 中使用的封裝 module
欄位的替換,用於取代主欄位。
publishConfig.registry
如果存在,當封裝即將推送到遠端位置時,將取代組態中定義的任何登錄檔。
publishConfig.type
取代套件的 type
欄位,用於已發布的 tarball,取代主要欄位。
installConfig
影響套件安裝方式的其他設定。
installConfig.hoistingLimits
定義套件可以提升到的最高點。
請參閱 nmHoistingLimits
以取得更多資訊。
installConfig.selfReferences
定義工作區是否允許需要自己。
請參閱 nmSelfReferences
以取得更多資訊。