2021-05-10 17:31:02 -04:00
|
|
|
.TH "NPM\-DIFF" "1" "May 2021" "" ""
|
2021-01-28 17:38:39 -05:00
|
|
|
.SH "NAME"
|
|
|
|
\fBnpm-diff\fR \- The registry diff command
|
|
|
|
.SS Synopsis
|
|
|
|
.P
|
|
|
|
.RS 2
|
|
|
|
.nf
|
|
|
|
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>]
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
.SS Description
|
|
|
|
.P
|
|
|
|
Similar to its \fBgit diff\fP counterpart, this command will print diff patches
|
|
|
|
of files for packages published to the npm registry\.
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
\fBnpm diff \-\-diff=<spec\-a> \-\-diff=<spec\-b>\fP
|
|
|
|
Compares two package versions using their registry specifiers, e\.g:
|
|
|
|
\fBnpm diff \-\-diff=pkg@1\.0\.0 \-\-diff=pkg@^2\.0\.0\fP\|\. It's also possible to
|
|
|
|
compare across forks of any package,
|
|
|
|
e\.g: \fBnpm diff \-\-diff=pkg@1\.0\.0 \-\-diff=pkg\-fork@1\.0\.0\fP\|\.
|
|
|
|
Any valid spec can be used, so that it's also possible to compare
|
|
|
|
directories or git repositories,
|
|
|
|
e\.g: \fBnpm diff \-\-diff=pkg@latest \-\-diff=\./packages/pkg\fP
|
|
|
|
Here's an example comparing two different versions of a package named
|
|
|
|
\fBabbrev\fP from the registry:
|
|
|
|
.P
|
|
|
|
.RS 2
|
|
|
|
.nf
|
|
|
|
npm diff \-\-diff=abbrev@1\.1\.0 \-\-diff=abbrev@1\.1\.1
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
On success, output looks like:
|
|
|
|
.P
|
|
|
|
.RS 2
|
|
|
|
.nf
|
|
|
|
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",
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
Given the flexible nature of npm specs, you can also target local
|
|
|
|
directories or git repos just like when using \fBnpm install\fP:
|
|
|
|
.P
|
|
|
|
.RS 2
|
|
|
|
.nf
|
|
|
|
npm diff \-\-diff=https://github\.com/npm/libnpmdiff \-\-diff=\./local\-path
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
In the example above we can compare the contents from the package installed
|
|
|
|
from the git repo at \fBgithub\.com/npm/libnpmdiff\fP with the contents of the
|
|
|
|
\fB\|\./local\-path\fP that contains a valid package, such as a modified copy of
|
|
|
|
the original\.
|
|
|
|
.IP \(bu 2
|
|
|
|
\fBnpm diff\fP (in a package directory, no arguments):
|
|
|
|
If the package is published to the registry, \fBnpm diff\fP will fetch the
|
|
|
|
tarball version tagged as \fBlatest\fP (this value can be configured using the
|
|
|
|
\fBtag\fP option) and proceed to compare the contents of files present in that
|
|
|
|
tarball, with the current files in your local file system\.
|
|
|
|
This workflow provides a handy way for package authors to see what
|
|
|
|
package\-tracked files have been changed in comparison with the latest
|
|
|
|
published version of that package\.
|
|
|
|
.IP \(bu 2
|
|
|
|
\fBnpm diff \-\-diff=<pkg\-name>\fP (in a package directory):
|
|
|
|
When using a single package name (with no version or tag specifier) as an
|
|
|
|
argument, \fBnpm diff\fP will work in a similar way to
|
|
|
|
\fBnpm\-outdated\fP \fInpm\-outdated\fR and reach for the registry to figure out
|
2021-02-23 17:29:16 -05:00
|
|
|
what current published version of the package named \fB<pkg\-name>\fP
|
|
|
|
will satisfy its dependent declared semver\-range\. Once that specific
|
|
|
|
version is known \fBnpm diff\fP will print diff patches comparing the
|
|
|
|
current version of \fB<pkg\-name>\fP found in the local file system with
|
|
|
|
that specific version returned by the registry\.
|
2021-01-28 17:38:39 -05:00
|
|
|
Given a package named \fBabbrev\fP that is currently installed:
|
|
|
|
.P
|
|
|
|
.RS 2
|
|
|
|
.nf
|
|
|
|
npm diff \-\-diff=abbrev
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
That will request from the registry its most up to date version and
|
|
|
|
will print a diff output comparing the currently installed version to this
|
|
|
|
newer one if the version numbers are not the same\.
|
|
|
|
.IP \(bu 2
|
|
|
|
\fBnpm diff \-\-diff=<spec\-a>\fP (in a package directory):
|
|
|
|
Similar to using only a single package name, it's also possible to declare
|
|
|
|
a full registry specifier version if you wish to compare the local version
|
|
|
|
of an installed package with the specific version/tag/semver\-range provided
|
|
|
|
in \fB<spec\-a>\fP\|\.
|
|
|
|
An example: assuming \fBpkg@1\.0\.0\fP is installed in the current \fBnode_modules\fP
|
|
|
|
folder, running:
|
|
|
|
.P
|
|
|
|
.RS 2
|
|
|
|
.nf
|
|
|
|
npm diff \-\-diff=pkg@2\.0\.0
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
It will effectively be an alias to
|
|
|
|
\fBnpm diff \-\-diff=pkg@1\.0\.0 \-\-diff=pkg@2\.0\.0\fP\|\.
|
|
|
|
.IP \(bu 2
|
|
|
|
\fBnpm diff \-\-diff=<semver\-a> [\-\-diff=<semver\-b>]\fP (in a package directory):
|
|
|
|
Using \fBnpm diff\fP along with semver\-valid version numbers is a shorthand
|
|
|
|
to compare different versions of the current package\.
|
|
|
|
It needs to be run from a package directory, such that for a package named
|
|
|
|
\fBpkg\fP running \fBnpm diff \-\-diff=1\.0\.0 \-\-diff=1\.0\.1\fP is the same as running
|
|
|
|
\fBnpm diff \-\-diff=pkg@1\.0\.0 \-\-diff=pkg@1\.0\.1\fP\|\.
|
|
|
|
If only a single argument \fB<version\-a>\fP is provided, then the current local
|
|
|
|
file system is going to be compared against that version\.
|
|
|
|
Here's an example comparing two specific versions (published to the
|
|
|
|
configured registry) of the current project directory:
|
|
|
|
.P
|
|
|
|
.RS 2
|
|
|
|
.nf
|
|
|
|
npm diff \-\-diff=1\.0\.0 \-\-diff=1\.1\.0
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
Note that tag names are not valid \fB\-\-diff\fP argument values, if you wish to
|
|
|
|
compare to a published tag, you must use the \fBpkg@tagname\fP syntax\.
|
|
|
|
.SS Filtering files
|
|
|
|
.P
|
|
|
|
It's possible to also specify positional arguments using file names or globs
|
|
|
|
pattern matching in order to limit the result of diff patches to only a subset
|
|
|
|
of files for a given package, e\.g:
|
|
|
|
.P
|
|
|
|
.RS 2
|
|
|
|
.nf
|
|
|
|
npm diff \-\-diff=pkg@2 \./lib/ CHANGELOG\.md
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
In the example above the diff output is only going to print contents of files
|
|
|
|
located within the folder \fB\|\./lib/\fP and changed lines of code within the
|
|
|
|
\fBCHANGELOG\.md\fP file\.
|
|
|
|
.SS Configuration
|
|
|
|
.SS diff
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
2021-02-23 17:29:16 -05:00
|
|
|
Type: Array
|
2021-01-28 17:38:39 -05:00
|
|
|
.IP \(bu 2
|
|
|
|
Default: null
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
Defines npm package specifiers to compare using the \fBnpm diff\fP command\.
|
|
|
|
.P
|
|
|
|
This can be specified up to 2 times\.
|
|
|
|
.SS diff\-name\-only
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: Boolean
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: false
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
When set to \fBtrue\fP running \fBnpm diff\fP only returns the names of the files that
|
|
|
|
have any difference\.
|
|
|
|
.SS diff\-unified
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: Number
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: \fB3\fP
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
The number of lines of context to print in the unified diff format output\.
|
|
|
|
.SS diff\-ignore\-all\-space
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: Boolean
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: false
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
Ignore whitespace when comparing lines\. This ignores differences even if one
|
|
|
|
line has whitespace where the other line has none\.
|
|
|
|
.SS diff\-no\-prefix
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: Boolean
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: false
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
Do not show any source or destination prefix\.
|
|
|
|
.SS diff\-src\-prefix
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: String
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: \fB"a/"\fP
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
Show the given source prefix in diff patches headers instead of using "a/"\.
|
|
|
|
.SS diff\-dst\-prefix
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: String
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: \fB"b/"\fP
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
Show the given source prefix in diff patches headers instead of using "b/"\.
|
|
|
|
.SS diff\-text
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: Boolean
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: false
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
Treat all files as text\.
|
|
|
|
.SS global
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: false
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: Boolean
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
Uses packages from the global space as a source for comparison\.
|
|
|
|
.SS tag
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
Type: String
|
|
|
|
.IP \(bu 2
|
|
|
|
Default: \fB"latest"\fP
|
|
|
|
|
|
|
|
.RE
|
|
|
|
.P
|
|
|
|
The tag used to fetch the tarball that will be compared with the local file
|
|
|
|
system files when running npm diff with no arguments\.
|
|
|
|
.SH See Also
|
|
|
|
.RS 0
|
|
|
|
.IP \(bu 2
|
|
|
|
npm help outdated
|
|
|
|
.IP \(bu 2
|
|
|
|
npm help install
|
|
|
|
.IP \(bu 2
|
|
|
|
npm help config
|
|
|
|
.IP \(bu 2
|
|
|
|
npm help registry
|
|
|
|
|
|
|
|
.RE
|