SemVer
根据国际主流的惯例,我们使用「语义化版本(Semantic Versioning)」的命名方式,有时简称 SemVer。
语义化版本号(以下简称「版本号」)的格式是:<major>.<minor>.<patch>
。即使用三位非负整数,以点号 .
连接。
如:1.4.15
、6.2.0
。
每一位版本号的含义
<major>
即主版本号,俗称大版本升级。改动到主版本号时,标志着 API 发生了巨大变化,包括但不限于新增特性、修改机制、删除功能, 一般不兼容上一个主版本号。<minor>
即次版本号,俗称小版本升级。当我们进行常规的新增或修改功能时,改动次版本号,但是 必须是向前兼容的。这也意味着我们 不能直接删除某个功能。如若必要,我们可以在 changelog 中标记某项功能为「即将删除(Deprecated)」,然后在下一个大版本中将其彻底删除。<patch>
即修订号,俗称 bug 修复。顾名思义,如果仅仅为了修复或调整一些小问题,我们就只改动修订号。
转自:http://taobaofed.org/blog/2016/08/05/instructions-of-semver/
(1)^指定版本:比如"^3.1.4",表示安装3.1.4及以上的版本(3.x.x),但是不安装4.0.0
(2)~指定版本:比如 "~1.1.0", 表示安装1.1.0及以上的版本(1.1.x),但是不安装1.2.x
ps:值得注意的是package-lock.json会把实际版本锁住,它会跟package.json保持一致,如果发现不一致npm才会去根据package.json来重新下载依赖包。
就是如果我们有使用自己写的依赖包,如果发了新包,我们想更新项目引用的版本,只能手动修改一下package.json的版本配置,不然不会更新依赖