目录
npm-diff
选择 CLI 版本
目录
概述
npm diff [...<paths>]
描述
类似于它的 git diff
对应部分,此命令将打印发布到 npm 注册表的包的文件的 diff 修补程序。
-
npm diff --diff=<spec-a> --diff=<spec-b>
使用它们的注册表说明符比较两个包版本,例如:
npm diff [email protected] --diff=pkg@^2.0.0
。还可以跨任何包的分支进行比较,例如:npm diff [email protected] [email protected]
。可以使用任何有效的规范,因此也可以比较目录或 git 存储库,例如:
npm diff --diff=pkg@latest --diff=./packages/pkg
以下是一个比较名为
abbrev
的包的两个不同版本的示例,这些版本来自注册表成功后,输出将如下所示
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","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这将从注册表请求其最新版本,如果版本号不同,则将打印比较当前安装版本与该更新版本的 diff 输出。
-
npm diff --diff=<spec-a>
(在包目录中)与仅使用单个包名称类似,如果您希望将已安装包的本地版本与
<spec-a>
中提供的特定版本/标签/semver 范围进行比较,也可以声明完整的注册表说明符版本。示例:假设
[email protected]
安装在当前的node_modules
文件夹中,运行它实际上将是
npm diff [email protected] [email protected]
的别名。 -
npm diff --diff=<semver-a> [--diff=<semver-b>]
(在包目录中)将
npm diff
与 semver 有效版本号一起使用,是比较当前包的不同版本的简写方法。它需要从包目录中运行,这样对于名为
pkg
的包,运行npm diff --diff=1.0.0 --diff=1.0.1
等效于运行npm diff [email protected] [email protected]
。如果仅提供单个参数
<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
- 手册页链接到
{prefix}/share/man
tag
- 默认值:"latest"
- 类型:字符串
如果您要求 npm 安装包并且没有告诉它特定版本,那么它将安装指定的标签。
也是由 npm tag
命令指定的 package@version 添加的标签,如果未给出显式标签。
当由 npm diff
命令使用时,这是用于获取默认情况下将与本地文件比较的 tarball 的标签。
workspace
- 默认
- 类型:字符串(可以设置多次)
启用在当前项目的配置工作空间的上下文中运行命令,同时通过仅运行此配置选项定义的工作空间进行筛选。
对于 workspace
配置的有效值为
- 工作空间名称
- 工作空间目录的路径
- 父工作空间目录的路径(将导致选择该文件夹中的所有工作空间)
当为 npm init
命令设置时,这可以设置为尚未存在的工作空间的文件夹,以创建文件夹并将其设置为项目中的全新工作空间。
此值不会导出到子进程的环境中。
workspaces
- 默认值:null
- 类型:null 或布尔值
设置为 true 以在 **所有** 配置工作空间的上下文中运行命令。
显式将其设置为 false 将导致诸如 install
之类的命令完全忽略工作空间。当未显式设置时
- 对
node_modules
树(install、update 等)进行操作的命令将链接工作空间到node_modules
文件夹中。- 执行其他操作(test、exec、publish 等)的命令将对根项目进行操作,除非在workspace
配置中指定了一个或多个工作空间。
此值不会导出到子进程的环境中。
include-workspace-root
- 默认值:false
- 类型:布尔值
当为命令启用工作空间时,包括工作空间根目录。
当为 false 时,通过 workspace
配置指定单个工作空间,或通过 workspaces
标志指定所有工作空间,将导致 npm 仅对指定的工作空间进行操作,而不是对根项目进行操作。
此值不会导出到子进程的环境中。