爲了在軟件版本號中包含更多意義,反映代碼所作的修改,產生了語義化版本,軟件的使用者能從版本號中推測軟件作的修改。npm 包使用語義化版控制,咱們可安裝必定版本範圍的 npm 包,npm 會選擇和你指定的版本相匹配
的 (latest)最新版本
安裝。
npm 的版本號由三部分組成:主版本號
、次版本號
、補丁版本號
。變動不一樣的版本號,表明不一樣的意義:html
有時候爲了表達更加確切的版本,還會在版本號後面添加標籤或者擴展,來講明是預發佈版本或者測試版本等。好比 3.2.3-beta-3。vue
常見的標籤有 :git
標籤 | 意義 | 補充 |
---|---|---|
demo | demo版本 | 可能用於驗證問題的版本 |
dev | 開發版 | 開發階段用的,bug 多,體積較大等特色,功能不完善 |
alpha | α版本 | 用於內部交流或者測試人員測試,bug較多 |
beta | 測試版(β版本) | 較α版本,有較大的改進,可是仍是有bug |
gamma | (γ)伽馬版本 | 較α和β版本有很大的改進,與穩定版相差無幾,用戶可以使用 |
trial | 試用版本 | 本軟件一般都有時間限制,過時以後用戶若是但願繼續使用,通常得交納必定的費用進行註冊或購買。有些試用版軟件還在功能上作了必定的限制。 |
stable | 穩定版 | |
csp | 內容安全版本 | js庫經常使用 |
latest | 最新版本 | 不指定版本和標籤,npm 默認安最新版 |
更多關於標籤的內容npm
查看標籤:json
npm dist-tags ls <pkg>
npm dist-tags ls vue
獲得:安全
beta: 2.6.0-beta.3 csp: 1.0.28-csp latest: 2.6.10
安裝帶標籤的版本bash
npm i <pkg>@<tag>
npm i vue@beta # 安裝 2.6.0-beta.3
0
表示先行版本,和補丁版本用-
分隔;NPM版本計算器post
棄用現存的功能是軟件開發中的屢見不鮮,也一般是向前發展所必須的。但當你棄用公共API的一部分時,你應該作兩件事:
(1)更新文檔以便使用者知道這個變化。
(2)發行不包含棄用功能的次版本。在新主版本中徹底移除棄用功能前,至少應有一個不包含棄用功能的次版本發佈,以便使用者可以平滑過渡到新的API。測試
如何更新版本號?不用手動修改 package.json。而是用以下命令:版本控制
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
執行 npm version <version> -m 'xx %s xx'
改變npm版本的同時,會執行一次 git commt -m 'xx %s xx'
並用版本號打一個tag,%s 會替換成版本號,前提是版本庫是乾淨的(clean)。
在 .git/hooks
目錄內,新建post-commit
,輸入如下內容:
#!/bin/sh COMMIT_MSG="$(git log --pretty=format:"%s" -1 head)" echo "$COMMIT_MSG" | grep -q "^[0-9]" if [ $? -ne 0 ];then # 自動修改 patch echo $(npm version patch) fi
在執行 git commit -m 'message'
後,會檢測message是不是版本號(y.x.z的形式),不是,則執行 npm version patch
更新補丁版本,打一個tag。
若是想自動修改次版本,post-commit 的內容便可。
版本運算符指定了必定範圍的版本。
主要有~、^、-、<、<=、>、>=、=版本運算符。
~ + 只含主版本 --- 主版本相同;
~ + 含有次版本 --- 主版本和次版本號相同。
版本範圍 | 匹配版本 |
---|---|
~3 | 3.x 或者 3.0.0 <= v < 4.0.0 |
~3.1 | 3.1.x 或者 3.1.0 <= v <3.2.0 |
~3.1.2 | 3.1.2 < v < 3.2.0 |
指定的版本範圍含有預發佈版本,只會匹配和完整版本號相同的預發佈版本。
~3.1.3-beta.2 匹配 3.1.3-beat.3 不匹配 3.1.4-beat-2
npm i lodash@~3 # 安裝 3.10.1 npm i lodash@~3.9 # 安裝 3.9.3 npm i lodash@~3.9.1 # 安裝 3.9.3 npm i lodash@~3.8.0 # 安裝 3.8.0
版本範圍 | 匹配版本 | 補充 |
---|---|---|
^3.1.5 | 3.1.5 <= v < 4.0.0 | |
^0.3.6 | 0.3.6 <= v < 0.4.0 | |
^0.0.2 | 0.0.2 <= v < 0.0.3 | |
^3.x.x | 3.0.0 <= v < 4.0.0 | 版本號缺乏的位置,會被 0 填充 |
^4.2.x | 4.2.0 <= v < 4.3.0 |
npm 安裝包時,默認使用 ^ 匹配版本。
安裝主版本號爲 3 的最新版本:
npm i lodash@^3 # 安裝 3.10.1 npm i lodash@^3.9 # 安裝 3.10.1 npm i lodash@^3.8.0 # 安裝 3.10.1
版本範圍 | 含義 | 匹配的版本 | 說明 |
---|---|---|---|
~3.3.0 | 與3.3.0類似 | 3.3.0 <= v < 3.4.0 | 主版本和次版本相同 |
^3.3.0 | 與3.3.0兼容 | 3.3.0 <= v < 4 | 主版本相同 |
同一個版本號,^ 能匹配的範圍大些,更加激進。
例子
npm i lodash@^3.3.0 # 安裝 3.10.1 npm i lodash@~3.3.0 # 安裝 3.3.1
~ 和 ≈ 差很少,可將 ~ 理解成類似,這樣就分辨和理解了,~指定的是類似版本。
^ 可理解成兼容版本。
版本範圍 | 匹配版本 | 補充 |
---|---|---|
2.0.0 - 3.2.7 | 2.0.0 <= v <= 3.2.7 | - 先後有空格 |
0.4 - 3 | 0.4.0 <= v <= 3.0.0 | 缺乏的版本號,被 0 填充 |
npm i vue@"1 - 1.9" # 安裝 1.0.28
版本範圍 | 匹配版本 | 補充 |
---|---|---|
<2.2.0 | 小於2.2.0 的版本 | |
<=2.0.0 | 小於等於 2.0.0 的版本 | |
>4.2.0 | 大於4.2.0 的版本 | |
>=4.2.0 | 大於等於 4.2.0 的版本 | |
=4.3.0 | 等於 4.3.0 的版本 |
\ 是轉義字符。
npm i lodash@\<3.5 # 安裝 3.4.0 npm i lodash@\<=3.5 # 安裝 3.5.0 npm i lodash@\>3.5 # 安裝 4.17.11 npm i lodash@\>=3.5 # 安裝 4.17.11 npm i vue@">1 <2.3" # 安裝 2.2.6
以或者
的關係鏈接兩個版本範圍,極少使用。
npm i vue@"^0.7 || ~2" # 安裝 2.6.10
依賴的版本
版本號管理策略&&使用npm管理項目版本號
語義化版本2.0
whats-the-difference-between-tilde-and-caret-in-package-json