你是不是也和我一樣,總忘記~和^的區別?(哈哈,或者你壓根就不知道?)
今天盯著semver的api看了很久(?原始碼就不看了,真是的又長又醜),感覺是看到它的規律了。
我們常見的大概有這些:
以上的大概可以覆蓋我們常見的一些情況了,下面分析一下semver是怎麼判斷的。
1、首先我們把版本分為a、b、c、xx四個位置: a-b-c-xx
2、最小範圍不管是「~***」還是「^***」都是》=***
3、最大範圍
如果為「~」:取a、b位,a、b位都有的時候直接b位+1,如「~1.1.0」取「1.(1+1).0」, 只有a位的時候「a位+1」,如「~1」取:「 (1+1).0.0」
如果為「^」: 直接從右到左去除無效的0然後看成乙個數字,最大位數+1就可以了
比如1.0.0可以看成100,也就是2.0.0
0.1.1看成11, 也就是0.(1+1).0
0.1.0看成10,也就是0.(1+1).0
0.0.0看成0, 也就是0 .0.(0+1)
以下是我的測試**:
const semver =
require
("semver");
const data =
"^3.1.4"
;const result =
">=3.1.4 <4.0.0"
;const validrange = semver.
validrange
(data)
;console.
assert
(validrange===result)
;
還沒看原始碼的,不過規則應該差不多吧,如果描述有誤還麻煩小夥伴告知一聲,歡迎志同道合的小夥伴一起學習,一起交流,一起進步,歡迎入群! NPM依賴包版本號 和 的區別及最佳實踐
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!你會發現很多專案的依賴包版本號前面會加上 或者是 以angular2為例 那麼 和 的作用和區別是什麼呢?詳細可參考 那麼該如何選擇呢?當然你可以指定特定的版本號,直接寫1.2.3,前面什麼字首都沒有,這樣固然沒問題,但是如果依賴包發布新版本修復了...
NPM依賴包版本號 和 的區別及最佳實踐
你會發現很多專案的依賴包版本號前面會加上 或者是 以angular2為例 那麼 和 的作用和區別是什麼呢?詳細可參考 那麼該如何選擇呢?當然你可以指定特定的版本號,直接寫1.2.3,前面什麼字首都沒有,這樣固然沒問題,但是如果依賴包發布新版本修復了一些小bug,那麼需要手動修改package.jso...
NPM依賴包版本號 和 的區別及最佳實踐
你會發現很多專案的依賴包版本號前面會加上 或者是 以angular2為例 會匹配最近的小版本依賴包,比如1.2.3會匹配所有1.2.x版本,但是不包括1.3.0 會匹配最新的大版本依賴包,比如1.2.3會匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0 詳細可參考 那麼該如何選擇呢?當然...