2

NPM酷库,每天两分钟,了解一个流行NPM库。

软件的命运就是不断维护、更新、迭代,所以我们用版本号来区分一个软件的不同时期和形态,版本号的命名方式有各种各样,有的以小数表示(几点几),有的以日期表示,有的以代码提交Hash表示等等。

今天在此向大家推荐一种非常流行的版本号命名规则:语义化版本。

所有NPM包都是用语义化版本号管理的,其格式如下

主版本号.次版本号.修订号

比如,2.1.12,代表主版本号为2,次版本号是1,修订版本号是12。语义化版本约定:

  • 修订版本号代表在和之前接口不变的前提下修正了BUG。
  • 次版本号变化说明产品增加了新特性,接口可能已经发生了变化。
  • 主版本号变化代表产品已经发生了很大的改变,与之前版本不兼容。

semver

在项目中,我们也许会在某些情况下对版本号进行检查、比较等操作。比如一个典型案例,在服务端判断APP客户端是否需要升级。

semver 就是专门用于语义化版本号检查的库,其也是语义化版本标准的制定者。

const semver = require('semver')

semver.valid('1.2.3') // '1.2.3'
semver.valid('a.b.c') // null
semver.clean('  =v1.2.3   ') // '1.2.3'
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
semver.gt('1.2.3', '9.8.7') // false
semver.lt('1.2.3', '9.8.7') // true

参考资料

https://github.com/npm/node-s...

https://semver.org/lang/zh-CN/

欢迎关注公众号:梁兴臣

梁兴臣

每天了解一个NPM库,一年后成为Node.js高手


脉冲云_梁兴臣
616 声望194 粉丝

脉冲云CTO,JS全栈开发,DevOps实施,开发体验优化,开发效率提升