npm8中文文档
与其对应的 git diff
类似,此命令将打印发布到 npm 注册表的包的文件差异补丁。
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.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 规范的灵活性,您还可以像使用 npm install
时一样定位本地目录或 git repos:
npm diff --diff=https://github.com/npm/libnpmdiff --diff=./local-path
在上面的示例中,我们可以比较从 github.com/npm/libnpmdiff
的 git repo 安装的包的内容与包含有效包的 ./local-path
的内容,例如原始包的修改副本。
npm diff
(在包目录中,无参数):
如果包发布到注册表,npm diff
将获取标记为 latest
的 tarball 版本(可以使用 tag
选项配置此值)并继续比较该 tarball 中存在的文件内容与本地文件中的当前文件系统。
此工作流程为包作者提供了一种方便的方式,可以查看与该包的最新发布版本相比,哪些包跟踪文件已更改。
npm diff --diff=<pkg-name>
(在包目录中):
当使用单个包名(没有版本或标签说明符)作为参数时,npm diff
将以与 npm-outdated
类似的方式工作,并到达注册表以确定名为 <pkg-name>
的包的当前发布版本将满足其依赖声明的 semver -范围。一旦知道该特定版本,npm diff
将打印差异补丁,将在本地文件系统中找到的 <pkg-name>
的当前版本与注册表返回的特定版本进行比较。
给定当前安装的名为 abbrev
的包:
npm diff --diff=abbrev
这将向注册表请求其最新版本,如果版本号不同,将打印一个比较当前安装的版本与新版本的差异输出。
npm diff --diff=<spec-a>
(在包目录中):
与仅使用单个包名称类似,如果您希望将已安装包的本地版本与 <spec-a>
中提供的特定版本/标签/semver-range 进行比较,也可以声明完整的注册表说明符版本。
示例:假设 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-valid 版本号是比较当前包的不同版本的简写。
它需要从一个包目录运行,这样对于一个名为 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
语法。