Package detail

libnpmdiff

npm2.7mISC8.0.5

The registry diff

npm, npmcli, libnpm, cli

readme

libnpmdiff

npm version license CI - libnpmdiff The registry diff lib.

Table of Contents

Example

const libdiff = require('libnpmdiff')

const patch = await libdiff([
  'abbrev@1.1.0',
  'abbrev@1.1.1'
])
console.log(
  patch
)

Returns:

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",

Install

$ npm install libnpmdiff

Contributing

The npm team enthusiastically welcomes contributions and project participation! There's a bunch of things you can do if you want to contribute! The Contributor Guide outlines the process for community interaction and contribution. Please don't hesitate to jump in if you'd like to, or even ask us questions if something isn't clear.

All participants and maintainers in this project are expected to follow the npm Code of Conduct, and just generally be excellent to each other.

Please refer to the Changelog for project history details, too.

Happy hacking!

API

> libnpmdif([ a, b ], [opts]) -> Promise<String>

Fetches the registry tarballs and compare files between a spec a and spec b. npm spec types are usually described in <pkg-name>@<version> form but multiple other types are alsos supported, for more info on valid specs take a look at npm-package-arg.

Options:

  • color <Boolean>: Should add ANSI colors to string output? Defaults to false.
  • tagVersionPrefix <Sring>: What prefix should be used to define version numbers. Defaults to v
  • diffUnified <Number>: How many lines of code to print before/after each diff. Defaults to 3.
  • diffFiles <Array<String>>: If set only prints patches for the files listed in this array (also accepts globs). Defaults to undefined.
  • diffIgnoreAllSpace <Boolean>: Whether or not should ignore changes in whitespace (very useful to avoid indentation changes extra diff lines). Defaults to false.
  • diffNameOnly <Boolean>: Prints only file names and no patch diffs. Defaults to false.
  • diffNoPrefix <Boolean>: If true then skips printing any prefixes in filenames. Defaults to false.
  • diffSrcPrefix <String>: Prefix to be used in the filenames from a. Defaults to a/.
  • diffDstPrefix <String>: Prefix to be used in the filenames from b. Defaults to b/.
  • diffText <Boolean>: Should treat all files as text and try to print diff for binary files. Defaults to false.
  • ...cache, registry, where and other common options accepted by pacote

Returns a Promise that fullfils with a String containing the resulting patch diffs.

Throws an error if either a or b are missing or if trying to diff more than two specs.

LICENSE

ISC

changelog

Changelog

11.4.2 (2025-06-11)

Bug Fixes

11.4.1 (2025-05-21)

Documentation

  • 3ed764a #8308 Clarify script working directory behavior (fixes #8305) (#8308) (@tarekwfa0110, @owlstronaut)

    Chores

  • 2f30251 #8314 remove references to skimdb.npmjs.com (#8314) (@shmam)
  • 9cb9d50 #8298 add contributor to changelog entry (#8298) (@wraithgar)

Dependencies

11.4.0 (2025-05-15)

Features

11.3.0 (2025-04-08)

Features

11.2.0 (2025-03-05)

Features

11.1.0 (2025-01-29)

Features

  • 7f6c997 #8009 add dry-run to deprecate/undeprecate commands (@wraithgar)
  • 1764a37 #8009 add npm undeprecate command (@wraithgar)

    Bug Fixes

  • 31455b2 #8054 publish: honor force for no dist tag and registry version check (#8054) (@reggi)
  • dc31c1b #8038 remove max-len linting bypasses (@wraithgar)
  • 8a911ff #8038 publish: disregard deprecated versions when calculating highest version (@wraithgar)
  • 7f72944 #8038 publish: accept publishConfig.tag to override highes semver check (@wraithgar)
  • ab9ddc0 #7992 sbom: deduplicate sbom dependencies (#7992) (@bdehamer)
  • f7da341 #7980 search: properly display multiple search terms (#7980) (@wraithgar)

    Documentation

  • 3644e79 #8055 update readme for Node.js versions, remove badges (#8055) (@wraithgar)
  • f1af61f #8041 fix typos in "package-json" (#8041) (@maxkoryukov)
  • e90c6fe #8051 depth flag default value (#8051) (@milaninfy)
  • 866b5ee #8030 safer documentation urls, repos, packages (#8030) (@reggi)

    Dependencies

  • 7ddfbad #8053 @npmcli/package-json@6.1.1
  • 9473a86 #8053 spdx-license-ids@3.0.21
  • a65e5ce #8053 @sigstore/protobuf-specs@0.3.3
  • 215ebe4 #8053 chalk@5.4.1

    Chores

  • 61f00e3 #8069 splits out smoke-tests from publish-dryrun tests (#8069) (@reggi)
  • 6d0f46e #8058 stop publish smoke from check git clean (#8058) (@reggi)
  • 9281ebf #8057 fix smoke tests prerelease needs separate string args (#8057) (@reggi)
  • aa202e9 #8056 smoke tests using a preid (#8056) (@reggi)
  • 18e0449 #8053 dev dependency updates (@wraithgar)
  • 859a71c #8052 update node versions for release integration tests (#8052) (@wraithgar)
  • 7e7961d #8038 bump @npmcli/eslint-config to 5.1.0 (@wraithgar)
  • workspace: @npmcli/config@10.0.1

11.0.0 (2024-12-16)

Documentation

11.0.0-pre.1 (2024-12-06)

⚠️ BREAKING CHANGES

  • Upon publishing, in order to apply a default "latest" dist tag, the command now retrieves all prior versions of the package. It will require that the version you're trying to publish is above the latest semver version in the registry, not including pre-release tags.
  • npm init now has a type prompt, and sorts the entries the created packages differently
  • bun.lockb files are now included in the strict ignore list during packing

    Features

  • f3ac7b7 #7939 no implicit latest tag on publish when latest > version (#7939) (@reggi, @ljharb)

    Bug Fixes

  • e362c6d #7944 prefix: remove duplicate -g from usage output (#7944) (@wraithgar)

    Documentation

  • 2af31dd #7947 change certfile to cafile (#7947) (@wraithgar)
  • 1be8e95 #7945 update ignore rules (@wraithgar)

    Dependencies

  • bc9b14d #7955 @npmcli/run-script@9.0.2
  • fecfcf4 #7955 node-gyp@11.0.0
  • 8905037 #7955 p-map@7.0.2
  • ac8eb39 #7955 diff@7.0.0
  • c0bcc2a #7955 walk-up-path@4.0.0
  • d463a6f #7955 init-package-json@8.0.0
  • b87ba24 #7945 @npmcli/package-json@6.1.0
  • 4bf1901 #7945 @npmcli/metavuln-calculator@9.0.0
  • ca84b22 #7945 pacote@21.0.0
  • 4906f3d #7945 npm-packlist@10.0.0

    Chores

  • cfdf214 #7943 fork changelog (#7943) (@wraithgar)
  • workspace: @npmcli/arborist@9.0.0-pre.1
  • workspace: @npmcli/config@10.0.0-pre.1
  • workspace: libnpmdiff@8.0.0-pre.1
  • workspace: libnpmexec@10.0.0-pre.1
  • workspace: libnpmfund@7.0.0-pre.1
  • workspace: libnpmorg@8.0.0-pre.1
  • workspace: libnpmpack@9.0.0-pre.1

11.0.0-pre.0 (2024-11-26)

⚠️ BREAKING CHANGES

  • When publishing a package with a pre-release version, you must explicitly specify a tag.
  • --ignore-scripts now applies to all lifecycle scripts, include prepare
  • npm will no longer fall back to the old audit endpoint if the bulk advisory request fails.
  • npm will no longer switch to global mode if aliased to "npmg" or "npm-g" etc.
  • The npm hook command has been removed
  • Attestations made by this package will no longer validate in npm versions prior to 10.6.0
  • npm now supports node ^20.17.0 || >=22.9.0
  • @npmcli/docs now supports node ^20.17.0 || >=22.9.0

    Features

  • 6995303 #7850 adds --ignore-scripts flag to pack (@reggi)

    Bug Fixes

  • 16b7367 #7910 publishing prerelease requires explicit tag (#7910) (@reggi)
  • e19bff0 #7901 perf: enable compile cache if present (#7901) (@H4ad)
  • 080a0f2 #7911 remove old audit fallback request (@wraithgar)
  • 780afc5 #7855 pkg: display if any of multiple attributes exist (#7855) (@Sanderovich)
  • ecd2d23 #7842 don't go into global mode if aliased to npmg (#7842) (@wraithgar)
  • 62c71e5 #7835 removes npm hook command (@reggi)
  • 7f541e8 #7815 make pack and exec work with git hash refs (#7815) (@milaninfy)
  • 3162620 #7831 sets node engine range to ^20.17.0 || >=22.9.0 (@reggi)
  • 4c8ba0a #7831 for @npmcli/docs sets node engine range to ^20.17.0 || >=22.9.0 (@reggi)
  • 70cd88d #7808 view: sort and truncate dist-tags (#7808) (@wraithgar)
  • 534ad77 #7795 remove unused parameters catch statements (#7795) (@btea)

    Documentation

  • feb54f7 #7822 package.json: add libc field (#7822) (@wraithgar)

    Dependencies

  • 78293ad #7937 spdx-license-ids@3.0.20
  • 33cf580 #7937 promise-call-limit@3.0.2
  • ef1c368 #7937 package-json-from-dist@1.0.1
  • 92e6f07 #7937 npm-registry-fetch@18.0.2
  • e32284a #7937 npm-install-checks@7.1.1
  • 5dffd11 #7937 negotiator@0.6.4
  • 69d9f01 #7937 make-fetch-happen@14.0.3
  • 884bbde #7937 hosted-git-info@8.0.2
  • 3c74ec0 #7937 debug@4.3.7
  • f00359f #7937 cross-spawn@7.0.6
  • 534bbe8 #7937 ci-info@4.1.0
  • 8cbf1a7 #7937 @npmcli/promise-spawn@8.0.2
  • 1bd39e7 #7937 @npmcli/map-workspaces@4.0.2
  • eb6498d #7937 ansi-regex@6.1.0
  • 66fc8c9 #7850 @npmcli/metavuln-calculator@8.0.1
  • 7dbef6f #7850 pacote@20.0.0
  • 75a3f12 #7859 remove unused deps (#7859)
  • f36dc59 #7833 pacote@19.0.1
  • 7ee15bb #7833 bump sigstore from 2.x to 3.0.0 (@bdehamer)

    Chores

  • 2d530a5 #7941 tests: account for when npm is a prerelease (#7941) (@wraithgar)
  • 2c1b369 #7937 dev dependency updates (@wraithgar)
  • 6edfe2f #7937 @npmcli/template-oss@4.23.5 (@wraithgar)
  • 475285b #7920 clean up dependency graph repos (#7920) (@hashtagchris)
  • ec57f5f #7911 fix dependencies script for circular workspace deps (@wraithgar)
  • ccd8420 #7911 fix cli tests for audit fallback removal (@wraithgar)
  • 720b4d8 #7833 bump @npmcli/arborist to 8.0.0 (@wraithgar)
  • 286739c #7824 add creation of a DEPENDENCIES.json file (#7824) (@reggi)
  • 852dd8b #7831 sets npm 11 to prerelase (@reggi)
  • 95d009e #7831 update engine ^20.17.0 || >=22.9.0 in actions (@reggi)
  • 5a74478 #7831 update engines ^20.17.0 || >=22.9.0 in package template (@reggi)
  • workspace: @npmcli/arborist@9.0.0-pre.0
  • workspace: @npmcli/config@10.0.0-pre.0
  • workspace: libnpmaccess@10.0.0-pre.0
  • workspace: libnpmdiff@8.0.0-pre.0
  • workspace: libnpmexec@10.0.0-pre.0
  • workspace: libnpmfund@7.0.0-pre.0
  • workspace: libnpmorg@8.0.0-pre.0
  • workspace: libnpmpack@9.0.0-pre.0
  • workspace: libnpmpublish@11.0.0-pre.0
  • workspace: libnpmsearch@9.0.0-pre.0
  • workspace: libnpmteam@8.0.0-pre.0
  • workspace: libnpmversion@8.0.0-pre.0