簡體   English   中英

如何添加 npm 依賴作為對等依賴

[英]How to add npm dependency as peer dependency

npm 是否可以選擇像 yarn option --yarn一樣將依賴項安裝為對等依賴項,而不是手動添加,例如:

"peerDependencies": {
  "@angular/core": "^7.0.0"
}

感謝@Broncha,通過對問題的更多澄清進行更新

問題是如何將對等依賴項添加到項目中。 那是

  • npm i dep在package.json中的“dependencies”添加依賴,
  • npm i -D dep將依賴添加到package.json中的“devDependencies”。

如何安裝將其添加到 package.json 中的“peerDependencies”的依賴項?

至於現在,沒有辦法,您可以將依賴項安裝為對等依賴項。 您必須然后安裝並手動將它們移動到peerDependencies中的package.json

舊答案


npm v3 刪除了對等依賴項的自動安裝,此功能在 npm v7 中老化添加。

因此,將您的 npm 更新到版本 7 或更高版本將解決大部分問題。

如果您需要將依賴項安裝為對等依賴項。

要安裝對等依賴,您實際上需要手動修改您的package.json文件。

比如你想安裝angular的核心組件庫作為對等依賴,

  1. npm i @angular/core

這將在依賴項 object 中添加一個屬性。

"dependencies": {
    "@angular/core": "^7.0.0"
}
  1. 將已安裝的 package 名稱移動到peerDependencies鍵。
"peerDependencies": {
    "@angular/core": "^7.0.0"
}

額外:如果您需要相同 package 的兩個版本,那么您可以像這樣修改packge.json文件,

"peerDependencies": {
   "@angular/core": "^6.0.0"
   "@angular/core": "^7.0.0"
 }

所有其他答案都在談論 NPM 命令如何處理在當前項目的 package.json 中安裝當前“deps”和“devDeps”的“peerDeps”,並自動安裝它們。

但問題是如何使用帶有特定標志的 NPM 命令將 deps 安裝為 'peerDeps' 並寫入當前項目的 package.json。

不幸的是,答案是直到 NPM@7 都沒有這樣的標志

我猜想 NPM 不會處理安裝 deps 的命令,因為將“peerDeps”添加到 package.json 並不真的需要 NPM 來將 package 安裝到 /node_modules/。 這只是將文件配置更改為 package.json。 但我知道人們不想在 package.json 文件中手動添加/刪除“deps”並希望 NPM 這樣做,這可能是因為 NPM 將處理“deps”的順序。 另一個原因是,“peerDeps”總是使用一系列 semver,並且必須手動編輯,而不是通過npm install命令。 react-redux

"peerDependencies": {
  "react": "^16.8.3 || ^17"
},

我認為 NPM@7 應該提供一種方法來支持它,因為現在它正式能夠處理“peerDeps”,並且此功能是其中的一部分。

npm 7 - 自動安裝對等依賴

之前的peerDependencies版本默認不安裝 peerDependencies,開發者需要自己管理和安裝 peer 依賴。

文檔: npm-7-is-now-generally-available/#peer-dependencies

npm 是否可以選擇將依賴項安裝為對等依賴項,如紗線選項--yarn ,而不是手動添加,例如:

"peerDependencies": {
  "@angular/core": "^7.0.0"
}

感謝@Broncha,更新了對問題的更多澄清

問題是如何向項目添加對等依賴項。 那是

  • npm i dep將依賴項添加到 package.json 中的“依賴項”中,
  • npm i -D dep將依賴項添加到 package.json 中的“devDependencies”。

如何安裝將其添加到 package.json 中的“peerDependencies”的依賴項?

您不能直接在 npm 3 中執行此操作,因此請查看下面的參考資料以獲取詳細信息 https://stackoverflow.com/a/35207983/10309265您可以通過任一方式參考: https://stackoverflow.com/a/35690137/10309265

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM