为什么 angular 相关项目不使用 semver 2.0 作为预发布标签?
Why do angular releated projects do not use semver 2.0 for prerelease tags?
许多 angular 相关项目使用以下预发布版本控制方案:
例如angular-cli
1.0.0-beta.22,
1.0.0-beta.22-1,
1.0.0-beta.24
例如@angular/material
2.0.0-alpha.9
2.0.0-alpha.9-1,
2.0.0-alpha.9-2,
2.0.0-alpha.9-3,
2.0.0-alpha.10,
2.0.0-alpha.2.0.0-alpha.11,
2.0.0-alpha.11-1,
由于语义版本控制的工作方式(点分隔符、数字始终低于字母数字部分的优先级),2.0.0-alpha.9-experimental-pizza 仍然是@angular/material 的最高版本,即使tough 2.0.0-alpha.11 已发布。
类似于 angular-cli,其中 1.0.0-beta.22-1 仍然是最高版本,即使 1.0.0-beta.24 已发布。
这会导致 package.json 与 ^ 版本的依赖关系,例如
"angular-cli" : "^1.0.0-beta.22-1"
不要升级到 1.0.0-beta.24,因为 24 是数字版本,因此小于 22-1。
我也将此作为问题发布到@angular/material 问题跟踪器 here 但没有得到任何回复。
这只是一个疏忽,还是我遗漏了什么?
更新:
angular-cli 现在有版本
angular-cli@1.0.0-beta.25
angular-cli@1.0.0-beta.25.1
angular-cli@1.0.0-beta.25.2
angular-cli@1.0.0-beta.25.3
etc.
所以这似乎是一个疏忽。
简而言之,这些是手动流程。该团队尚未投资于自动化。至少这是针对 Angular CLI,因为我是存储库源代码的贡献者(但不是团队成员)。
在几乎所有最近的版本中,发布时发生了一些事情,所以他们不得不发布另一个版本。因此 1.0.0-beta.xx
之类的东西很快就被 1.0.0-beta.xx-1
紧随其后。
有些测试很难 运行 在发布包之前。特别是对于发布一系列包的 CLI,而不仅仅是一个(CLI 使用的几个 webpack 插件可以作为单独的包供其他非 CLI 种子项目使用)。
通常当团队对某个版本感到满意时,他们会明确地 tag
将其作为 latest
,这是 npm 允许发布者做的事情,因此,理论上你不应该拥有这个 Angular Material alpha 9 vs alpha 11 问题,除非 alpha 11 没有被标记为最新或其他。
很久以后,我认为这是对 alpha / beta 的疏忽。此问题现已解决,angular 项目也遵循 semver 的预发布标签。
许多 angular 相关项目使用以下预发布版本控制方案:
例如angular-cli
1.0.0-beta.22,
1.0.0-beta.22-1,
1.0.0-beta.24
例如@angular/material
2.0.0-alpha.9
2.0.0-alpha.9-1,
2.0.0-alpha.9-2,
2.0.0-alpha.9-3,
2.0.0-alpha.10,
2.0.0-alpha.2.0.0-alpha.11,
2.0.0-alpha.11-1,
由于语义版本控制的工作方式(点分隔符、数字始终低于字母数字部分的优先级),2.0.0-alpha.9-experimental-pizza 仍然是@angular/material 的最高版本,即使tough 2.0.0-alpha.11 已发布。
类似于 angular-cli,其中 1.0.0-beta.22-1 仍然是最高版本,即使 1.0.0-beta.24 已发布。
这会导致 package.json 与 ^ 版本的依赖关系,例如
"angular-cli" : "^1.0.0-beta.22-1"
不要升级到 1.0.0-beta.24,因为 24 是数字版本,因此小于 22-1。 我也将此作为问题发布到@angular/material 问题跟踪器 here 但没有得到任何回复。
这只是一个疏忽,还是我遗漏了什么?
更新:
angular-cli 现在有版本
angular-cli@1.0.0-beta.25
angular-cli@1.0.0-beta.25.1
angular-cli@1.0.0-beta.25.2
angular-cli@1.0.0-beta.25.3
etc.
所以这似乎是一个疏忽。
简而言之,这些是手动流程。该团队尚未投资于自动化。至少这是针对 Angular CLI,因为我是存储库源代码的贡献者(但不是团队成员)。
在几乎所有最近的版本中,发布时发生了一些事情,所以他们不得不发布另一个版本。因此 1.0.0-beta.xx
之类的东西很快就被 1.0.0-beta.xx-1
紧随其后。
有些测试很难 运行 在发布包之前。特别是对于发布一系列包的 CLI,而不仅仅是一个(CLI 使用的几个 webpack 插件可以作为单独的包供其他非 CLI 种子项目使用)。
通常当团队对某个版本感到满意时,他们会明确地 tag
将其作为 latest
,这是 npm 允许发布者做的事情,因此,理论上你不应该拥有这个 Angular Material alpha 9 vs alpha 11 问题,除非 alpha 11 没有被标记为最新或其他。
很久以后,我认为这是对 alpha / beta 的疏忽。此问题现已解决,angular 项目也遵循 semver 的预发布标签。