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高手
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。