[譯] Node 模塊中的 peer dependencies 是什麼?

原文: flaviocopes.com/npm-peer-de…前端

在某些 package.json 文件中,你可能見到過一些這樣的配置行:npm

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

複製代碼

dependenciesdevDependencies 常見,而 peerDependencies 並非。json

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

devDependencies 是開發階段所須要的包。好比說像 Jest 這樣的測試框架或 Babel、ESLint 等其餘庫。測試

在以上兩種狀況中,當你安裝一個包時,其 dependencies 和 devDependencies 會被 npm 自動安裝。spa

peerDependencies 則有所不一樣,它們不會被自動安裝。code

當一個依賴項 c 被列在某個包 b 的 peerDependency 中時,它就不會被自動安裝。取而代之的是,包含了 b 包的代碼庫 a 則必須將對應的依賴項 c 包含爲其依賴。cdn

若是運行 npm install 時找不到該依賴,npm 會做出警告,正如例子中所示:blog

a/package.jsonci

{
  //...
  "dependencies": {
    "b": "1.x"
  }
}
複製代碼

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 或其餘不兼容的版本。該規定遵循 flaviocopes.com/npm-semanti… 標準。



--End--

查看更多前端好文
請搜索 fewelife 關注公衆號

轉載請註明出處

相關文章
相關標籤/搜索