插入符号和波浪号:有什么区别?
插入符号和波浪号都允许指定最低版本,并允许在实际安装哪个版本方面具有一定的灵活性。不同的主要版本不会满足这两个范围- semver 中的信号,表明版本之间存在重大变化。
插入符号和波浪号捕获的版本之间有两个主要区别: 围绕次要版本更改的灵活性和以下版本1.0.0(即“幻零”版本)的行为。
波浪号:灵活的补丁
对于波浪号范围,主要和次要版本必须与指定的版本匹配,但任何大于或等于指定版本的补丁版本都是有效的。
例如,~1.2.3允许版本1.2.3最多但不包括下一个次要版本1.3.0.
我们可以用 npm使用的semver 实现来证明这一点:
var semver = require('semver')
semver.toComparators('~1.2.3')
// [ [ '>=1.2.3-0', '<1.3.0-0' ] ]
插入符号:灵活的小调和补丁
对于插入符范围,只有主要版本必须匹配。任何大于或等于最小值的次要或补丁版本都是有效的。
例如,一系列的~1.2.3将只允许版本高达,但不包括1.3.0. 但是,插入符号版本^1.2.3允许从1.2.3所有版本一直到(但不包括)下一个主要版本2.0.0.
semver.toComparators('^1.2.3')
// [ [ '>=1.2.3-0', '<2.0.0-0' ] ]
// compare upper limit for ~
semver.toComparators('~1.2.3')
// [ [ '>=1.2.3-0', '<1.3.0-0' ] ]