【问题标题】:How to add npm dependency as peer dependency如何将 npm 依赖项添加为对等依赖项
【发布时间】:2020-07-21 16:31:27
【问题描述】:

npm 是否可以选择将依赖项安装为对等依赖项,例如 yarn 选项 --yarn,而不是手动添加例如:

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

更新更多地澄清问题,感谢@Broncha

问题是如何向项目添加对等依赖项。那是

  • npm i dep 将依赖添加到 package.json 中的“依赖项”中,
  • npm i -D dep 将依赖项添加到 package.json 中的“devDependencies”。

如何安装将其添加到 package.json 中“peerDependencies”的依赖项?

【问题讨论】:

  • @MwamiTovi 很遗憾,不,我需要在我的项目中添加对等依赖项,所以我应该手动将其添加到 peerDependencies 中吗?
  • 是的,如该答案中所述,您必须手动处理peer-dependencies
  • 我喜欢每个人都在同一个潮流中回答如何安装对等依赖项,而问题是如何向项目添加对等依赖项。即npm i dep,将依赖添加到package.json中的“dependencies”键,npm i -D dep将依赖添加到package.json中的“devDependencies”。如何安装将其添加到 package.json 中的“peerDependencies”键的依赖项?我也搜索了这个,但是我用 npm i 安装它并手动将它移动到键
  • @Broncha 感谢您以更好的方式描述问题,我用您的描述更新了问题。

标签: javascript node.js npm yarnpkg


【解决方案1】:

就目前而言,没有办法,您可以将依赖项安装为对等依赖项。然后您必须安装并手动将它们移动到package.json 中的peerDependencies 对象

- 我注意到您更新了问题,而我的回答不符合更新后问题的上下文。

旧答案


在 npm v3 中删除了对等依赖项的自动安装,此功能在 npm v7 中已过时添加。

因此,将您的 npm 更新到版本 7 或更高版本将解决大部分问题。

如果您需要将依赖项安装为对等依赖项。

要安装peer依赖,其实需要手动修改package.json文件。

例如,如果要安装 Angular 的核心组件库作为对等依赖项,

  1. npm i @angular/core

这将在依赖对象中添加一个属性。

"dependencies": {
    "@angular/core": "^7.0.0"
}
  1. 将安装的包名移动到peerDependencies键。
"peerDependencies": {
    "@angular/core": "^7.0.0"
}

额外: 如果您需要同一个包的两个版本,那么您可以像这样修改packge.json 文件,

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

【讨论】:

  • 所以这曾经存在于npm,现在它不再存在了?为什么?
【解决方案2】:

您不能直接在 npm 3 中执行此操作,因此请查看以下参考以获取详细信息 https://stackoverflow.com/a/35207983/10309265 您可以通过任一方式参考:https://stackoverflow.com/a/35690137/10309265

【讨论】:

    【解决方案3】:

    所有其他答案都在谈论 NPM 命令如何处理在当前项目的 package.json 中安装当前“deps”和“devDeps”的“peerDeps”,并自动安装它们。

    但问题是如何使用带有特定标志的 NPM 命令将 deps 安装为“peerDeps”并写入当前项目的 package.json。

    ANSWER 不幸的是,即使在 NPM@7 之前也没有这样的标志

    我猜 NPM 不认为是安装 deps 的命令,因为将“peerDeps”添加到 package.json 并不需要 NPM 将包安装到 /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”并且这个功能是其中的一部分。

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 2015-11-16
      • 1970-01-01
      • 2016-02-18
      • 2016-02-22
      • 1970-01-01
      • 2016-05-14
      • 2017-05-07
      相关资源
      最近更新 更多