npm-version

提升套件版本

選擇 CLI 版本

概要

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
alias: verison

組態

allow-same-version

  • 預設:false
  • 類型:布林值

npm version 用於將新版本設定為與目前版本相同的值時,避免擲回錯誤。

commit-hooks

  • 預設:true
  • 類型:布林值

使用 npm version 指令時,執行 git commit 掛勾。

git-tag-version

  • 預設:true
  • 類型:布林值

使用 npm version 指令時,標記 commit。將此設定為 false 會導致完全不進行 commit。

json

  • 預設:false
  • 類型:布林值

輸出 JSON 資料,而不是一般輸出。

  • npm pkg set 中,它會在將設定值儲存到 package.json 之前,使用 JSON.parse() 來解析設定值。

並非所有 npm 指令都支援。

preid

  • 預設:""
  • 類型:字串

用作 semver「pre-release」部分前綴的「pre-release 識別碼」。類似於 1.2.0-rc.8 中的 rc

sign-git-tag

  • 預設:false
  • 類型:布林值

如果設定為 true,則 npm version 指令會使用 -s 標記版本,以新增簽章。

請注意,git 要求您在 git 設定中設定 GPG 金鑰,才能正常運作。

workspace

  • 預設
  • 類型:字串(可設定多次)

在當前專案設定的工作空間中執行指令,同時透過僅執行此設定選項所定義的工作空間來過濾。

workspace 設定的有效值為

  • 工作空間名稱
  • 工作空間目錄路徑
  • 父工作空間目錄路徑(將選取該資料夾中的所有工作空間)

設定為 npm init 指令時,可以設定為尚未存在的資料夾,以建立資料夾並將其設定為專案中的全新工作空間。

此值不會匯出到子程序的環境。

workspaces

  • 預設:null
  • 類型:null 或布林

設為 true 以在所有已設定工作區的內容中執行指令。

明確將此設為 false 將導致 install 等指令完全忽略工作區。未明確設定時

  • node_modules 樹狀結構進行操作的指令(安裝、更新等)會將工作區連結到 node_modules 資料夾。- 對其他項目進行操作的指令(測試、執行、發布等)會在根目錄專案上執行,除非workspace 設定中指定一個或多個工作區。

此值不會匯出到子程序的環境。

workspaces-update

  • 預設:true
  • 類型:布林值

如果設為 true,npm cli 會在可能將已安裝工作區變更到 node_modules 資料夾的操作後執行更新。

include-workspace-root

  • 預設:false
  • 類型:布林值

在為指令啟用工作區時,包含工作區根目錄。

如果為 false,則透過 workspace 設定指定個別工作區,或透過 workspaces 旗標指定所有工作區,會導致 npm 僅對指定的工作區執行操作,而不是根目錄專案。

此值不會匯出到子程序的環境。

說明

在套件目錄中執行此動作,以升級版本並將新資料寫回 package.jsonpackage-lock.json,以及(如果存在)npm-shrinkwrap.json

newversion 參數應為有效的 semver 字串、semver.inc 的有效第二個參數(patchminormajorprepatchpreminorpremajorprerelease 之一),或 from-git。在第二個情況下,現有版本將在指定欄位中增加 1。from-git 會嘗試讀取最新的 git 標籤,並將其用作新的 npm 版本。

如果在 git 儲存庫中執行,它也會建立版本提交和標籤。此行為由 git-tag-version 控制(請參閱下方),並可透過執行 npm --no-git-tag-version version 在命令列中停用。如果工作目錄不乾淨,則會失敗,除非設定 -f--force 旗標。

如果提供 -m--message 設定 選項,npm 會在建立版本提交時將其用作提交訊息。如果 message 設定包含 %s,則會將其替換為結果版本號碼。例如

npm version patch -m "Upgrade to %s for reasons"

如果設定 sign-git-tag 設定,則會使用 -s 旗標對 git 簽署標籤。請注意,必須在 git 設定中設定預設 GPG 金鑰,才能正常運作。例如

$ npm config set sign-git-tag true
$ npm version patch
You need a passphrase to unlock the secret key for
user: "isaacs (http://blog.izs.me/) <i@izs.me>"
2048-bit RSA key, ID 6C481CF6, created 2010-08-31
Enter passphrase:

如果 preversionversionpostversion 出現在 package.json 的 scripts 屬性中,它們將會在執行 npm version 時執行。

執行順序如下:

  1. 在開始前檢查 git 工作目錄是否乾淨。您的腳本可能會在後續步驟中將檔案新增到提交中。如果設定 --force 旗標,則會略過此步驟。
  2. 執行 preversion 腳本。這些腳本可以存取 package.json 中的舊 version。常見的用途是在部署前執行完整的測試套件。您想要新增到提交中的任何檔案都應該使用 git add 明確新增。
  3. 根據要求變更 package.json 中的 versionpatchminormajor 等)。
  4. 執行 version 腳本。這些腳本可以存取 package.json 中的新 version(例如,它們可以將其納入產生的檔案中的檔案標頭)。同樣地,腳本應該使用 git add 明確將產生的檔案新增到提交中。
  5. 提交並加上標籤。
  6. 執行 postversion 腳本。使用它來清除檔案系統或自動推送提交和/或標籤。

以下範例:

{
"scripts": {
"preversion": "npm test",
"version": "npm run build && git add -A dist",
"postversion": "git push && git push --tags && rm -rf build/temp"
}
}

這會執行所有測試,並且僅在測試通過時繼續進行。然後執行您的 build 腳本,並將 dist 目錄中的所有內容新增到提交中。在提交後,它會將新的提交和標籤推送到伺服器,並刪除 build/temp 目錄。

另請參閱