對 package.json
文件中的 peerDependencies
字段進行簡單解釋
在一些 package.json
文件中,你可能會看到以下幾行代碼:
{
//...
"peerDependencies": {
"libraryName": "1.x"
}
}
你可能已經看過 dependencies
和 devDependencies
,但沒有看過 peerDependencies
。
dependencies
是你的項目所依賴的包。
devDependencies
是在開發階段所需的包。比如測試框架像 Jest,或是其他像 Babel 或 ESLint 這樣的工具包。
在這兩種情況下,當你安裝一個包時,它的 dependencies
和 devDependencies
會被自動安裝。
然而,peerDependencies
不同。它們不會自動安裝。
當一個依賴被列為 peerDependency
,它並不會自動安裝。相反,包含該包的程式碼必須將其列為自己的依賴。
如果你運行 npm install
,但沒有找到這個依賴的話,npm
會給你一個警告。
舉個例子,假設包 a
包含依賴 b
:
a/package.json
{ //... "dependencies": { "b": "1.x" } }
包 b
又要求包 c
為其 peerDependency
:
b/package.json
{ //... "peerDependencies": { "c": "1.x" } }
在包 a
中,我們必須將 c
添加為依賴,否則當你安裝包 b
時,npm 會給出一個警告(並且代碼可能在運行時失敗):
a/package.json
{ //... "dependencies": { "b": "1.x", "c": "1.x" } }
版本必須兼容,所以如果一個 peerDependency
的版本被列為 2.x
,你不能安裝 1.x
或其他版本。這都遵循 語義化版本號。