目錄
npm-diff
選擇 CLI 版本
目錄
概要
npm diff [...<paths>]
說明
類似於其 git diff
對應項目,此指令會列印發佈到 npm 登錄的套件檔案的 diff patch。
-
npm diff --diff=<spec-a> --diff=<spec-b>
使用其註冊規格比較兩個套件版本,例如:
npm diff --diff=pkg@1.0.0 --diff=pkg@^2.0.0
。也可以比較任何套件的分支,例如:npm diff --diff=pkg@1.0.0 --diff=pkg-fork@1.0.0
。可以使用任何有效的規格,因此也可以比較目錄或 git 儲存庫,例如:
npm diff --diff=pkg@latest --diff=./packages/pkg
以下是一個範例,比較註冊表中名為
abbrev
的套件的兩個不同版本npm diff --diff=abbrev@1.1.0 --diff=abbrev@1.1.1成功時,輸出看起來像
diff --git a/package.json b/package.jsonindex v1.1.0..v1.1.1 100644--- a/package.json+++ b/package.json@@ -1,6 +1,6 @@{"name": "abbrev",- "version": "1.1.0",+ "version": "1.1.1","description": "Like ruby's abbrev module, but in js","author": "Isaac Z. Schlueter <i@izs.me>","main": "abbrev.js",由於 npm 規格的彈性,您也可以像使用
npm install
一樣,鎖定本機目錄或 git 儲存庫npm diff --diff=https://github.com/npm/libnpmdiff --diff=./local-path在上面的範例中,我們可以比較從
github.com/npm/libnpmdiff
的 git 儲存庫安裝的套件內容,以及包含有效套件的./local-path
內容,例如原始副本的修改版本。 -
npm diff
(在套件目錄中,無參數)如果套件已發布到註冊表,
npm diff
會擷取標記為latest
的 tarball 版本(可以使用tag
選項設定此值),並繼續比較 tarball 中存在的文件內容,以及您本機檔案系統中的目前檔案。此工作流程提供了一個方便的方式,讓套件作者可以查看與該套件最新發布版本相比,哪些套件追蹤的文件已變更。
-
npm diff --diff=<pkg-name>
(在套件目錄中)當使用單一套件名稱(沒有版本或標籤規格)作為參數時,
npm diff
的運作方式會類似於npm-outdated
,並會連線到註冊表,找出名為<pkg-name>
的套件目前已發布的版本,會滿足其依賴宣告的 semver 範圍。一旦知道特定版本,npm diff
會列印 diff 程式碼,比較本機檔案系統中找到的<pkg-name>
目前版本,以及註冊表回傳的特定版本。假設目前已安裝名為
abbrev
的套件npm diff --diff=abbrev這將從註冊表中要求其最新版本,如果版本號碼不同,將列印出比較目前已安裝版本與此較新版本差異的輸出。
-
npm diff --diff=<spec-a>
(在套件目錄中)類似於只使用單一套件名稱,如果您希望將已安裝套件的本機版本與
<spec-a>
中提供的特定版本/標籤/語義版本範圍進行比較,也可以宣告完整的註冊表指定版本。範例:假設
pkg@1.0.0
已安裝在目前的node_modules
資料夾中,執行npm diff --diff=pkg@2.0.0這將有效地成為
npm diff --diff=pkg@1.0.0 --diff=pkg@2.0.0
的別名。 -
npm diff --diff=<semver-a> [--diff=<semver-b>]
(在套件目錄中)將
npm diff
與語義版本有效的版本號碼一起使用,是比較目前套件不同版本的簡寫。它需要從套件目錄中執行,例如對於名為
pkg
的套件,執行npm diff --diff=1.0.0 --diff=1.0.1
與執行npm diff --diff=pkg@1.0.0 --diff=pkg@1.0.1
相同。如果只提供單一參數
<version-a>
,則會將目前的本機檔案系統與該版本進行比較。以下是一個範例,比較目前專案目錄的兩個特定版本(已發佈到已設定的註冊表)
npm diff --diff=1.0.0 --diff=1.1.0
請注意,標籤名稱不是有效的 --diff
參數值,如果您希望與已發佈的標籤進行比較,您必須使用 pkg@tagname
語法。
過濾檔案
也可以使用檔案名稱或 glob 模式比對來指定位置參數,以將 diff 修補程式的結果限制為特定套件的檔案子集,例如
npm diff --diff=pkg@2 ./lib/ CHANGELOG.md
在上面的範例中,diff 輸出只會列印位於 ./lib/
資料夾內的檔案內容,以及 CHANGELOG.md
檔案中變更的程式碼行。
設定
diff
- 預設值
- 類型:字串(可以設定多次)
定義在 npm diff
中進行比較的參數。
diff-name-only
- 預設值:false
- 類型:布林值
使用 npm diff
時,僅列印檔名。
diff-unified
- 預設值:3
- 類型:數字
在 npm diff
中列印的內容行數。
diff-ignore-all-space
- 預設值:false
- 類型:布林值
比較 npm diff
中的行時,忽略空白。
diff-no-prefix
- 預設值:false
- 類型:布林值
在 npm diff
輸出中,不顯示任何來源或目的地前綴。
注意:這會導致 npm diff
忽略 --diff-src-prefix
和 --diff-dst-prefix
設定檔。
diff-src-prefix
- 預設值:"a/"
- 類型:字串
要在 npm diff
輸出中使用的來源前綴。
diff-dst-prefix
- 預設值:"b/"
- 類型:字串
要在 npm diff
輸出中使用的目的地前綴。
diff-text
- 預設值:false
- 類型:布林值
在 npm diff
中將所有檔案視為文字。
global
- 預設值:false
- 類型:布林值
以「全域」模式運作,因此套件會安裝到 prefix
資料夾,而不是目前的作業目錄。請參閱 資料夾,以進一步了解行為差異。
- 套件會安裝到
{prefix}/lib/node_modules
資料夾,而不是目前的作業目錄。 - bin 檔案會連結到
{prefix}/bin
- man 頁面會連結到
{prefix}/share/man
tag
- 預設值:"latest"
- 類型:字串
如果您要求 npm 安裝套件,但未告知特定版本,則它會安裝指定的標籤。
如果未提供明確的標籤,則也會將標籤新增到 npm tag
命令指定的 package@version。
當 npm diff
命令使用時,這是用來擷取 tarball 的標籤,該 tarball 預設會與本機檔案進行比較。
workspace
- 預設值
- 類型:字串(可以設定多次)
啟用在目前專案的已設定工作區的內容中執行命令,同時透過僅執行此設定檔選項定義的工作區進行篩選。
workspace
設定檔的有效值為
- 工作區名稱
- 工作區目錄的路徑
- 父工作區目錄的路徑(將會選取該資料夾中的所有工作區)
當設定為 npm init
命令時,這可以設定為尚未存在的資料夾的工作區,以建立資料夾並將其設定為專案中的全新工作區。
此值不會匯出到子程式的環境。
workspaces
- 預設值:null
- 類型:null 或布林值
設定為 true 以在所有設定的工作區中執行命令。
明確設定為 false 將導致類似 install
的指令完全忽略工作區。未明確設定時
- 對
node_modules
樹狀結構進行操作的指令(安裝、更新等)會將工作區連結至node_modules
資料夾。- 執行其他操作的指令(測試、執行、發布等)會在根目錄專案中執行,除非在workspace
組態中指定一個或多個工作區。
此值不會匯出到子程式的環境。
include-workspace-root
- 預設值:false
- 類型:布林值
在針對指令啟用工作區時,請包含工作區根目錄。
為 false 時,透過 workspace
組態指定個別工作區,或透過 workspaces
旗標指定所有工作區,將導致 npm 僅在指定的工作區中執行,而不在根目錄專案中執行。
此值不會匯出到子程式的環境。