npm 会尝试避免安装已弃用的软件包版本吗?
Will npm try to avoid installing a deprecated package version?
我找不到任何说明 npm 不会尝试安装已弃用的软件包版本的文档。
示例:
2.0.0-beta.2 2.0.0-beta.5 2.0.0-rc.9
所以如果我安装 ^2.0.0-beta.2,它将解析为 2.0.0-rc.9
如果我弃用 2.0.0-rc.9
2.0.0-beta.2 2.0.0-beta.5 2.0.0-rc.9
(deprecated)
现在如果我安装 ^2.0.0-beta.2,它将解析为 2.0.0-beta.5
但我找不到任何证明此行为的文档。有人可以帮忙验证一下吗?
NPM 将根据您对每个依赖项的 package.json 规则执行您告诉它要做的任何事情。如果您使用 ^
作为版本前缀,那么是的:您确实告诉 NPM 使用“最新的次要版本”。
查看 the documentation for dependency management and the semver range documentation 以了解可接受的语法及其含义。
我测试并确认,如果有其他版本可以使用,它确实会忽略已弃用的版本。 (我暂时弃用了 metal-name
1.3.1 版,然后 运行 npm install metal-name@1
。它安装了 1.3.0 版而不是 1.3.1 版。当我删除 1.3.1 版的弃用时,它当我 运行 npm install metal-name@1
.
时回到安装 1.3.1
我找不到 npm CLI 文档中提到的这种行为。但是,我可以找到它 mentioned in the commit log for the npm CLI client.
npm 使用 npm-pick-manifest
来确定要安装的内容。该模块的自述文件说:
Prefers non-deprecated versions to deprecated versions.
我找不到任何说明 npm 不会尝试安装已弃用的软件包版本的文档。
示例:
2.0.0-beta.2 2.0.0-beta.5 2.0.0-rc.9
所以如果我安装 ^2.0.0-beta.2,它将解析为 2.0.0-rc.9
如果我弃用 2.0.0-rc.9
2.0.0-beta.2 2.0.0-beta.5 2.0.0-rc.9
(deprecated)
现在如果我安装 ^2.0.0-beta.2,它将解析为 2.0.0-beta.5
但我找不到任何证明此行为的文档。有人可以帮忙验证一下吗?
NPM 将根据您对每个依赖项的 package.json 规则执行您告诉它要做的任何事情。如果您使用 ^
作为版本前缀,那么是的:您确实告诉 NPM 使用“最新的次要版本”。
查看 the documentation for dependency management and the semver range documentation 以了解可接受的语法及其含义。
我测试并确认,如果有其他版本可以使用,它确实会忽略已弃用的版本。 (我暂时弃用了 metal-name
1.3.1 版,然后 运行 npm install metal-name@1
。它安装了 1.3.0 版而不是 1.3.1 版。当我删除 1.3.1 版的弃用时,它当我 运行 npm install metal-name@1
.
我找不到 npm CLI 文档中提到的这种行为。但是,我可以找到它 mentioned in the commit log for the npm CLI client.
npm 使用 npm-pick-manifest
来确定要安装的内容。该模块的自述文件说:
Prefers non-deprecated versions to deprecated versions.