版本规范
说到npm包的版本,就不得不提一个版本, Semantic Versioning 语义化版本
- major:主版本,一般代表着Breaking Change,例如vue 1.x 和 vue2.x、webpack4.x和webpack5.x
- minor:次版本,一般代表着新feature的出现
- patch:一般不包含新功能,只是bugfix或和功能关系不大的修改
pre-release:预发行版本,一般用于正式版发行前的验证、联调和测试。和正式版本号之间用-连接,pre-release不是必须存在的。
- alpha
- beta
- ...
- rc(release candidate)
大小比较
2.3.2 > 2.2.17 > 2.2.17-beta.1 > 2.2.17-beta.0 > 2.2.17-alpha.1 > 2.2.16
版本范围
// 大于、小于、等于、小于等于
>、<、>=、<=
// - 表示范围,边界可等
- : 1.2.3 - 2.3.4 表示 >=1.2.3 <=2.3.4
// X 表示通配,和各种语言的通配符一样
x : 1.2.x 表示 >=1.2.0 <1.3.0
// ~ 表示限制minor版本的升级
~ : ~1.2.3 表示 >=1.2.3 <1.3.0
// ^ 表示 允许第二个非零的版本的升级
^1.2.3 表示 >=1.2.3 <2.0.0
^0.2.3 表示 >=0.2.3 <0.3.0
^0.0.3 表示 >=0.0.3 <0.0.4
2. Changelog
什么是Changelog?
Changelog是以时间为倒叙的列表,记录所有版本的重大变动。
为什么要有Changelog
为了让我们提供的库和框架的用户了解,每个版本发生了哪些改变,提供多于版本号的信息
3. 自动化的管理版本和Changelog
release-it
- 根据git commit 自动生成版本号
- 自动生成changelog
- 丰富的hooks用来指定发版逻辑
- 提供插件机制,高度可扩展性