Semantic Versioning(语义化的版本管理)
最近在了解npm的依赖管理的时候,发现了对版本号的一些解释和应用,引用翻译点核心的思想:
If a project is going to be shared with others, it should start at 1.0.0, though some projects on npm don't follow this rule. 当需要共享一个项目的时候,他的版本号应该是1.0.0,虽然npm上的有些项目没有遵守这个规则.
After this, changes should be handled as follows: 在此之后,接下来的改变应该遵循如下规则:
- Bug fixes and other minor changes: Patch release, increment the last number, e.g. 1.0.1(小bug修改和其它小变动,版本号应该递增最后一个数字,例如1.0.1)
- New features which don't break existing features: Minor release, increment the middle number, e.g. 1.1.0(增加新功能,但是未改变现有功能,也就是一个小版本,递增中间的数字,例如1.1.0)
- Changes which break backwards compatibility: Major release, increment the first number, e.g. 2.0.0(新增的改动可能会破坏原有的兼容性,也就是一个大版本,递增第一个数字,例如2.0.0)
一些感想
semver给npm的依赖管理带来了更多的灵活性,例如:
- Patch releases(指定一个版本号): 1.0 or 1.0.x or ~1.0.4
- Minor releases(指定最小化的版本号): 1 or 1.x or ^1.0.4
- Major releases(指定主版本): * or x