语义化版本(semver)在作为一个项目中如何定义版本

Semver 在应用库运用.

Semver 在应用库上的定义很明确成熟

应用库上举例:

  • 修复小BUG . Patch 修定版更新.
  • 对象增加方法. Minor 次版本号更新.
  • 删除方法. Major 主版本号更新.

这种被广泛运用于依赖管理工具(npm/composer/maven/...).

Semver 在项目中运用

比如, 就拿 gitlab 来说, 看了 changelog , 感觉主次版本号的变更毫无规律可言. 似乎与项目代码的变更无关.
如: 删除代码方法, 并未改变大版本号. (应用库的版本定义方式不适用).

项目又会把API独立一个版本维护:

这个可以理解.
比如原本/api/v1/user/1返回 {"name":"Tom","age":18}
新增字段,删除字段,改变结构, 都会变更主版本号/api/v2, /api/v3

疑问

在一个项目中 Semver 该怎么适用的

  • Semver 在应用库中参考对象是代码的变更, 在项目中变更的参考对象也会是代码吗?
  • 项目的API是否需要单独作为版本定义?
  • 若参考对象是代码:

    • 在UI的代码中, 如: HTML/CSS 变更, 没有方法定义, 又如何定义版本?
    • 项目代码配置的变更, 影响比较大. 比如: 假如思否的源码有配置"私信"功能的开关, 配置变更, 版本需要重新定义吗?
    • (这个也包含作为应用库的疑问) 依赖库的版本升级, 兼容代码执行, 修订版本号变更吗?
      比如: npm package.json{"jquery": "^2"} 升级 {"jquery":"^3"}.
阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进