阅读(748) (0)

npm 差异 diff

2021-09-07 16:14:49 更新

注册表差异命令

概要

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 对应的命令相似,此命令将为发布到 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

可以使用任何有效的规范,页次也可以比较目录或 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 规范的灵活性,您还可以像使用时一样定位本地目录或 git repos npm install

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

在上面的示例中,我们可以将从 git 存储库安装的包中github.com/npm/libnpmdiff的内容与./local-path包含有效包的内容进行比较 ,例如原始包的修改副本。

  • npm diff (在包目录中,没有参数): 如果包发布到注册表,npm diff将获取标记为的 tarball 版本latest(可以使用tag选项配置此值 )并继续比较该 tarball 中存在的文件内容与本地文件系统中的当前文件。 此工作流程为包作者提供了一种方便的方法,可以查看与该包的最新发布版本相比,哪些包跟踪文件发生了更改。
  • npm diff --diff=<pkg-name> (在包目录中): 当使用单个包名称(没有版本或标签说明符)作为参数时,npm diff将以npm-outdated与注册表类似的方式工作, 并让注册表找出当前发布的包名称版本<pkg-name> 将满足其依赖声明的 semver-range。一旦知道该特定版本,npm 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连同semver,有效的版本号是一个速记比较不同版本的当前包的。 它需要从包目录运行,这样对于名为pkgrunning的包 npm diff --diff=1.0.0 --diff=1.0.1与 running 相同 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语法。

过滤文件

还可以使用文件名或 globs 模式匹配来指定位置参数,以将 diff 补丁的结果限制为给定包的文件子集,例如:

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

在上面的例子中,diff 输出只会打印文件夹内文件的内容和文件中./lib/更改的代码行 CHANGELOG.md

配置

diff 差异

  • 默认:
  • 类型:String(可多次设置)

npm diff中定义要进行比较的参数。

diff-name-only 仅差异文件名

  • 默认值:false
  • 类型:Boolean

使用npm diff时仅打印文件名。

diff-unified 差异统一

  • 默认值:3
  • 类型:Number

要在npm diff中打印的上下文行数。

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

  • 默认值:false
  • 类型:Boolean

比较npm diff中的行时忽略空格。

diff-no-prefix 差异无前缀

  • 默认值:false
  • 类型:Boolean

不要在npm diff输出中显示任何源或目标前缀。

注意:这会导致npm diff忽略--diff-src-prefix和 --diff-dst-prefix配置。

diff-src-prefix 差异源前缀

  • 默认值:a/
  • 类型:String

要在npm diff输出中使用的源前缀。

diff-dst-prefix 差异目标前缀

  • 默认值:b/
  • 类型:String

要在npm diff输出中使用的目标前缀。

diff-text 差异文本

  • 默认值:false
  • 类型:Boolean

npm diff中将所有文件视为文本。

global 全局

  • 默认值:false
  • 类型:Boolean

在“全局”模式下运行,以便将包安装到prefix 文件夹而不是当前工作目录中。有关行为差异的更多信息,请参阅 文件夹。

  • 软件包安装到{prefix}/lib/node_modules文件夹中,而不是当前工作目录中。
  • bin 文件链接到 {prefix}/bin
  • 手册页链接到 {prefix}/share/man

tag

默认值:new 类型:String

如果你要求 npm 安装一个包并且没有告诉它一个特定的版本,那么它会安装指定的标签。

npm tag 如果未给出显式标签,则也是添加到命令指定的 package@version 的标签。

当被npm diff命令使用时,这是用于获取默认情况下将与本地文件进行比较的 tarball 的标签。

workspace 工作区

  • 默认值:
  • 类型:String(可多次设置)

允许在当前项目的已配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。

workspace配置的有效值为:

  • 工作区名称
  • 工作区目录的路径
  • 父工作区目录的路径(将导致选择所有嵌套工作区)

为该npm init命令设置时,可以将其设置为尚不存在的工作区的文件夹,以创建该文件夹并将其设置为项目中的全新工作区。

此值不会导出到子进程的环境中。

workspaces 工作区

  • 默认值:false
  • 类型:Boolean

启用在所有已配置工作区的上下文中运行命令。

此值不会导出到子进程的环境中。