package.json 文件中的 peerDependencies 字段進行簡單解釋

在一些 package.json 文件中,你可能會看到以下幾行代碼:

{
 //...
 "peerDependencies": {
 "libraryName": "1.x"
 }
}

你可能已經看過 dependenciesdevDependencies,但沒有看過 peerDependencies

dependencies 是你的項目所依賴的包。

devDependencies 是在開發階段所需的包。比如測試框架像 Jest,或是其他像 BabelESLint 這樣的工具包。

在這兩種情況下,當你安裝一個包時,它的 dependenciesdevDependencies 會被自動安裝。

然而,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 或其他版本。這都遵循 語義化版本號