天天看點

package.json項目或者子產品包的描述~和^的差別

插入符号和波浪号:有什麼差別?

插入符号和波浪号都允許指定最低版本,并允許在實際安裝哪個版本方面具有一定的靈活性。不同的主要版本不會滿足這兩個範圍- 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' ] ]
           

繼續閱讀