Amr*_*ama 6 javascript node.js npm yarnpkg
npm 是否可以选择将依赖项安装为对等依赖项--yarn,例如 yarn option ,而不是手动添加它,例如:
"peerDependencies": {
"@angular/core": "^7.0.0"
}
Run Code Online (Sandbox Code Playgroud)
感谢@Broncha,更新问题的更多说明
问题是如何向项目添加对等依赖项。那是
npm i dep 将依赖添加到 package.json 中的“dependencies”,npm i -D dep 将依赖项添加到 package.json 中的“devDependencies”。如何安装将其添加到 package.json 中的“peerDependencies”的依赖项?
所有其他答案都在谈论 NPM 命令如何处理在当前项目的 package.json 中安装当前“deps”和“devDeps”的“peerDeps”,并自动安装它们。
但问题是如何使用带有特定标志的 NPM 命令将 deps 安装为“peerDeps”并写入当前项目的 package.json 中。
不幸的是,答案是,即使在 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"
},
Run Code Online (Sandbox Code Playgroud)
我认为 NPM@7 应该提供一种支持这一点的方法,因为现在它正式能够处理“peerDeps”,并且此功能是其中的一部分。
peerDependencies键入package.json- 我注意到您更新了问题,而我的回答不符合更新问题的上下文。
npm v3 删除了对等依赖项的自动安装,此功能是在 npm v7 中添加的。
因此,将您的 npm 更新到版本 7 或更高版本将解决大部分问题。
要安装对等依赖,您实际上需要手动修改您的package.json文件。
比如你想安装angular的核心组件库作为peer依赖,
npm i @angular/core这将在依赖项对象中添加一个属性。
"dependencies": {
"@angular/core": "^7.0.0"
}
Run Code Online (Sandbox Code Playgroud)
peerDependencieskey。"peerDependencies": {
"@angular/core": "^7.0.0"
}
Run Code Online (Sandbox Code Playgroud)
额外:
如果你需要同一个包的两个版本,那么你可以packge.json像这样修改文件,
"peerDependencies": {
"@angular/core": "^6.0.0"
"@angular/core": "^7.0.0"
}
Run Code Online (Sandbox Code Playgroud)
安装命令的选项--save-peer就是您正在寻找的:
npm install --save-peer <dep>
Run Code Online (Sandbox Code Playgroud)
如果<dep>已经安装在 下dependencies,那么此命令会自动将其移动到下peerDependencies。
这比手动编辑 package.json 更好,因为它也会更新锁定文件。
| 归档时间: |
|
| 查看次数: |
6673 次 |
| 最近记录: |