npm 差異 diff

2021-10-29 10:48 更新

注冊表差異命令

概要

npm diff [...<paths>]
npm diff --diff=<pkg-name> [...<paths>]
npm diff --diff=<version-a> [--diff=<version-b>] [...<paths>]
npm diff --diff=<spec-a> [--diff=<spec-b>] [...<paths>]
npm diff [--diff-ignore-all-space] [--diff-name-only] [...<paths>]

描述

與其 git diff 對應(yīng)的命令相似,此命令將為發(fā)布到 npm 注冊表的包打印文件的差異補丁。

  • npm diff --diff=<spec-a> --diff=<spec-b> 使用它們的注冊表說明符比較兩個包的版本,例如:npm dff --dff=pkg@1.0.0 --diff=pkg@2.0.0。也可以在任何包的 fork 之間進行比較,例如:npm diff --diff=pkg@1.0.0 --diff=pkg-fork@1.0.0。

可以使用任何有效的規(guī)范,頁次也可以比較目錄或 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.json
    index 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 規(guī)范的靈活性,您還可以像使用時一樣定位本地目錄或 git repos?npm install

 npm diff --diff = https://github.com/npm/libnpmdiff --diff = ./local-path

在上面的示例中,我們可以將從 git 存儲庫安裝的包中github.com/npm/libnpmdiff的內(nèi)容與./local-path包含有效包的內(nèi)容進行比較?,例如原始包的修改副本。

  • npm diff?(在包目錄中,沒有參數(shù)): 如果包發(fā)布到注冊表,npm diff將獲取標(biāo)記為的 tarball 版本latest(可以使用tag選項配置此值?)并繼續(xù)比較該 tarball 中存在的文件內(nèi)容與本地文件系統(tǒng)中的當(dāng)前文件。 此工作流程為包作者提供了一種方便的方法,可以查看與該包的最新發(fā)布版本相比,哪些包跟蹤文件發(fā)生了更改。
  • npm diff --diff=<pkg-name>?(在包目錄中): 當(dāng)使用單個包名稱(沒有版本或標(biāo)簽說明符)作為參數(shù)時,npm diff將以npm-outdated與注冊表類似的方式工作,?并讓注冊表找出當(dāng)前發(fā)布的包名稱版本<pkg-name>?將滿足其依賴聲明的 semver-range。一旦知道該特定版本,npm diff將打印比較<pkg-name>本地文件系統(tǒng)中找到的當(dāng)前版本與注冊表返回的特定版本的差異補丁。 給定一個名為abbrev當(dāng)前安裝的包:
    npm diff --diff=abbrev

    這將從注冊表請求其最新版本,并且如果版本號不同,將打印比較當(dāng)前安裝的版本與此較新版本的差異輸出。

  • npm diff --diff=<spec-a>?(在包目錄中): 與僅使用單個包名稱類似,如果您希望將已安裝包的本地版本與<spec-a>. 一個例子:假設(shè)pkg@1.0.0安裝在當(dāng)前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連同semver,有效的版本號是一個速記比較不同版本的當(dāng)前包的。 它需要從包目錄運行,這樣對于名為pkgrunning的包?npm diff --diff=1.0.0 --diff=1.0.1與 running 相同?npm diff --diff=pkg@1.0.0 --diff=pkg@1.0.1。 如果只提供了一個參數(shù)<version-a>,則將當(dāng)前本地文件系統(tǒng)與該版本進行比較。 這是比較當(dāng)前項目目錄的兩個特定版本(發(fā)布到配置的注冊表)的示例:
    npm diff --diff = 1.0.0 --diff = 1.1.0

請注意,標(biāo)簽名稱不是有效的--diff參數(shù)值,如果你希望與已發(fā)布的標(biāo)簽進行比較,則必須使用pkg@tagname語法。

過濾文件

還可以使用文件名或 globs 模式匹配來指定位置參數(shù),以將 diff 補丁的結(jié)果限制為給定包的文件子集,例如:

npm diff --diff = pkg@2 ./lib/ CHANGELOG.md 

在上面的例子中,diff 輸出只會打印文件夾內(nèi)文件的內(nèi)容和文件中./lib/更改的代碼行?CHANGELOG.md。

配置

diff 差異

  • 默認(rèn):
  • 類型:String(可多次設(shè)置)

npm diff中定義要進行比較的參數(shù)。

diff-name-only 僅差異文件名

  • 默認(rèn)值:false
  • 類型:Boolean

使用npm diff時僅打印文件名。

diff-unified 差異統(tǒng)一

  • 默認(rèn)值:3
  • 類型:Number

要在npm diff中打印的上下文行數(shù)。

diff-ignore-all-space 差異忽略所有控件

  • 默認(rèn)值:false
  • 類型:Boolean

比較npm diff中的行時忽略空格。

diff-no-prefix 差異無前綴

  • 默認(rèn)值:false
  • 類型:Boolean

不要在npm diff輸出中顯示任何源或目標(biāo)前綴。

注意:這會導(dǎo)致npm diff忽略--diff-src-prefix和?--diff-dst-prefix配置。

diff-src-prefix 差異源前綴

  • 默認(rèn)值:a/
  • 類型:String

要在npm diff輸出中使用的源前綴。

diff-dst-prefix 差異目標(biāo)前綴

  • 默認(rèn)值:b/
  • 類型:String

要在npm diff輸出中使用的目標(biāo)前綴。

diff-text 差異文本

  • 默認(rèn)值:false
  • 類型:Boolean

npm diff中將所有文件視為文本。

global 全局

  • 默認(rèn)值:false
  • 類型:Boolean

在“全局”模式下運行,以便將包安裝到prefix?文件夾而不是當(dāng)前工作目錄中。有關(guān)行為差異的更多信息,請參閱?文件夾。

  • 軟件包安裝到{prefix}/lib/node_modules文件夾中,而不是當(dāng)前工作目錄中。
  • bin 文件鏈接到?{prefix}/bin
  • 手冊頁鏈接到?{prefix}/share/man

tag

默認(rèn)值:new 類型:String

如果你要求 npm 安裝一個包并且沒有告訴它一個特定的版本,那么它會安裝指定的標(biāo)簽。

npm tag?如果未給出顯式標(biāo)簽,則也是添加到命令指定的 package@version 的標(biāo)簽。

當(dāng)被npm diff命令使用時,這是用于獲取默認(rèn)情況下將與本地文件進行比較的 tarball 的標(biāo)簽。

workspace 工作區(qū)

  • 默認(rèn)值:
  • 類型:String(可多次設(shè)置)

允許在當(dāng)前項目的已配置工作區(qū)的上下文中運行命令,同時通過僅運行此配置選項定義的工作區(qū)進行過濾。

workspace配置的有效值為:

  • 工作區(qū)名稱
  • 工作區(qū)目錄的路徑
  • 父工作區(qū)目錄的路徑(將導(dǎo)致選擇所有嵌套工作區(qū))

為該npm init命令設(shè)置時,可以將其設(shè)置為尚不存在的工作區(qū)的文件夾,以創(chuàng)建該文件夾并將其設(shè)置為項目中的全新工作區(qū)。

此值不會導(dǎo)出到子進程的環(huán)境中。

workspaces 工作區(qū)

  • 默認(rèn)值:false
  • 類型:Boolean

啟用在所有已配置工作區(qū)的上下文中運行命令。

此值不會導(dǎo)出到子進程的環(huán)境中。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號