提问人:ineedtoknow 提问时间:11/11/2023 更新时间:11/11/2023 访问量:12
npm 安装特定专业的最新测试版
NPM Install Latest Beta Version of a Specific Major
问:
假设我正在从具有以下版本包的 NPM 存储库安装:
...
2.5.0-beta.1
2.5.0
2.6.0-beta.1
2.6.0-beta.2
3.0.0
3.1.0-beta.1
...
我的package.json中需要包含哪些内容才能安装最新的 Major 2 测试版。在上面的示例中,我想安装 .我不想去专业 3。2.6.0-beta.2
我试过使用 and or ,但它们都会导致 .显然,如果我使用,我会得到 major 3 () 的最新测试版,这不是我想要的。
我也不能只是因为测试版仍将发布,我不想每次发生这种情况时都必须手动更新它。^2
<3
<3.0.0
2.5.0
@beta
3.1.0-beta.1
2.6.0-beta.2
我们需要获取软件包的测试版(我们拥有)来验证它,但现在只能在主要 2 上。
答:
{
"dependencies": {
"your-package": ">=2.6.0-beta.2 < 2.6.1"
}
}
这将仅安装版本 2.6.0-beta.2 -> 2.6.0-beta。[无限]
这是一个有用的工具:
- 检查实际的公共 npm 模块:https://semver.npmjs.com/
你也可以使用 semver npm 包。
对于阅读此答案的其他用户,最好对 semver(节点模块版本号系统)有所了解。版本号的组成部分包括:
[major]
..-.[minor]
[patch]
[preid]
[prerelease]
下面是复杂版本号“1.2.3-beta.4”的示例
- “1”是主要版本。
- “2”是次要版本。
- “3”是补丁版本。
- “beta”是预发行标签(又名“preid”)。
- “4”是预发行版本。
Npm 的文档说......
如果版本具有预发行标记(例如,1.2.3-alpha.3),则它 只有在至少一个比较器集的情况下,才允许满足比较器集 具有相同 [major, minor, patch] 元组的比较器也具有 预发行标记。
--- https://docs.npmjs.com/cli/v6/using-npm/semver#prerelease-tags
用人的话来说,这意味着如果你包含一个预发行标签,那么 npm 将只考虑你指定范围内具有相同 .,-. 的版本major
minor
patch
preid
例如,此约束将匹配以下内容:即使预发行版本“100”在技术上大于“0”,它也不会匹配,因为 alpha 与 beta 不匹配。"^1.0.0-beta.0"
1.0.0-beta.23
1.2.0
1.0.0-alpha.100
在您的例子中,约束也会匹配“3.0.0”,但不匹配“3.1.0-beta.1”,因为即使它有“beta”作为 pre id,在处理 preid 标签时,tupples 也必须匹配。3.1.0 元组与 2.6.0 元组不匹配,因此不匹配。不过,您说不希望版本“3.0.0”匹配。您只想要 2.6.0 预发行版。"^2.6.0-beta.2"
因此,我们必须使我们的范围更具限制性。
">=2.6.0-beta.2 < 2.6.1"
>=2.6.0-beta.2
表示我们想要一个大于或等于 的版本。与 2.6.0-beta 匹配的任何版本。X 将匹配。但 3.0.0 甚至 4.0.0 也是如此。我们需要一个上限。2.6.0-beta.2
< 2.6.1
表示版本号必须小于 2.6.1
因此,我们只剩下 2.6.0-beta.2 和 2.6.1 之间的版本
满足该范围的唯一版本号是以 2.6.0 开头并具有 beta 标记的版本。
评论
>=2.6.0-beta.2 < 2.6.1
这只会获得该主要 AND 次要 AND 补丁的最新测试版。我需要获得该专业的最新测试版;如果我必须指定次要和补丁,那么就没有多大意义了。谢谢,但这不是我要找的。
>=3.0.0-beta.0 < 3.0.1
上一个:无法安装节点 gc-stats
评论