我们使用Nexus作为我们的NPM软件包存储库(以及其他东西(。 在我们的package.json文件中,我们使用semver语法 https://docs.npmjs.com/misc/semver 但它被忽略了。有谁知道我们是否有配置问题?或者也许这不是对 NPM 而不是 Nexus 的期望?
在开发过程中可能发生在我们身上的场景示例:
组件 A – package.json:
"name": "ComponentA",
"version": "1.1.2"
组件 B – package.json:
"name": "ComponentB",
"version": "3.0.0"
"dependencies":
"ComponentA": "^1.1.0"
Person1 构建并发布 ComponentA 的 1.1.2 版到 nexus。
一个。 组件 npm 运行构建 b. 组件 npm 发布到结点 c. npm 视图 组件 A 最新:1.1.2
现在,Person2 构建 7 将组件 A 的 1.1.1 版本发布到。
一个。 组件 npm 运行构建 b. 组件 npm 发布到结点 c. npm view 组件 A 最新:1.1.1 Nexus 将组件的最新版本视为最后一个发布的版本,尽管知道 1.1.2 也已发布。
现在,当 ComponentB 安装其依赖项时,我希望获得 ComponentA 的 1.1.2 版,但实际上我得到的是 1.1.1 版。
d. 组件B npm 安装
我认为这就是 npm 的工作方式。 ^1.1.0 表示使用最新版本的 1.1.x - 在这种情况下,它将是 1.1.1,因为它在按照您完成的顺序上传时标记为最新。