9.4.2 (2026-03-18)
21ea382#9110 arborist: resolve sibling override sets via common ancestor (#9110) (@manzoorwanijk)51365b1#9107 arborist: update store symlinks when hash changes in linked strategy (#9107) (@manzoorwanijk)8e0a731#9108 arborist: skip linked actual tree diff in package-lock-only mode (#9108) (@manzoorwanijk)
9.4.1 (2026-03-10)
5b7c0cc#9096 arborist: exclude store nodes from :root > * in linked strategy (#9096) (@manzoorwanijk)3b70a9d#9097 arborist: simplify rootDeclaredDeps initialization (#9097) (@manzoorwanijk)c7702d0#9094 arborist: fix non-idempotent linked install with workspace projects (#9094) (@manzoorwanijk)1a744b5#9081 arborist: omit root dev deps in linked strategy when shared with workspaces (#9081) (@manzoorwanijk)ff51827#9076 arborist: do not hoist undeclared workspaces in linked strategy (#9076) (@manzoorwanijk)1206f8b#9069 consolidate isolated node/link attributes (#9069) (@wraithgar)a774fb7#9066 arborist: respect --omit flag in linked install strategy (#9066) (@manzoorwanijk)8614b2a#9031 arborist: avoid full reinstall on subsequent linked strategy runs (#9031) (@manzoorwanijk)16fbe13#9030 resolve relative file: dependencies correctly with install-strategy=linked (#9030) (@manzoorwanijk)983742b#9055 isolated mode code cleanup (#9055) (@wraithgar)a29aeee#9028 arborist: retry bin-links on Windows EPERM (#9028) (@manzoorwanijk)10d5302#9051 arborist: unwrap Link nodes in legacyPeerDeps for linked strategy (#9051) (@manzoorwanijk)94bfef5#9044 audit: exclude locally linked packages from vulnerability audit (#9044) (@lucas-gomes-santana)26fa40e#9041 fix workspace-filtered install with linked strategy (@owlstronaut)
9.4.0 (2026-02-25)
880ecb7#9013 arborist: skip postinstall on store links in linked strategy (#9013) (@manzoorwanijk)07e6edd#9025 save libc field to package-lock.json (@owlstronaut)a2154cd#8996 linked strategy fixes for scoped packages, aliases, and peer deps (#8996) (@manzoorwanijk)
9.3.1 (2026-02-19)
bb135cc#8981 arborist: fixpeerOptionaldependency resolution inbuildIdealTree(#8981) (@Saibamen, @cursoragent)
9.3.0 (2026-02-11)
9.2.0 (2026-02-04)
9.1.10 (2026-01-21)
9.1.9 (2025-12-09)
9.1.8 (2025-11-25)
f963223#8770proggy@4.0.0f51e4aa#8770nopt@9.0.02d15040#8770@npmcli/query@5.0.058650dc#8770@npmcli/fs@5.0.0
9.1.7 (2025-11-19)
3225fa3#8737 fix usage of path of custom registry (#8737) (@flj2mu2)e9f0418#8689 arborist: improve override conflict detection with semantic comparison (#8689) (@Artur-)05319f0#8677 code cleanup (#8677) (@wraithgar)49a4eef#8676 use look behind regex for trailing slash stripping (#8676) (@wraithgar)b1aee62#8645 dep flag calculation (#8645) (@liamcmitchell)
8cc9f70#8723ssri@13.0.059b3c6a#8723@npmcli/redact@4.0.06cb77df#8723@npmcli/installed-package-contents@4.0.005ac7a7#8723proc-log@6.0.00a74f6d#8723bin-links@6.0.0041b9b2#8723parse-conflict-json@5.0.1a1b0fea#8723@npmcli/name-from-folder@4.0.03404dca#8723npm-install-checks@8.0.0542fcf3#8723@npmcli/node-gyp@5.0.0
9.1.6 (2025-10-08)
0a8b8c2#8621 typo bugs and other spelling fixes (#8621) (@jsoref)54fd27f#8602 refactor node.ideallyInert to node.inert (#8602) (@liamcmitchell)13d8df6#8537 optional set calculation (#8537) (@liamcmitchell)
180e9f7#8610 fix spelling in workspaces/arborist (#8610) (@jsoref)91393de#8599 Update references for arborist to cli (#8599) (@jsoref)
9.1.5 (2025-09-23)
60aa94b#8576 attach path to json parse error (@wraithgar)1eedf82#8576 use @npmcli/package-json to parse package.json (@wraithgar)f6c868d#8566 calculate omit in diff (#8566) (@liamcmitchell, Liam Mitchell)d389614#8579 corrects peer dependency flag propagation (@owlstronaut)
566f1b7#8576minimatch@10.0.3ea7ca5f#8576lru-cache@11.2.1bf6b686#8576npm-package-arg@13.0.09392488#8576npm-package-manifest@11.0.1633c4ed#8576hosted-git-info@9.0.01149971#8576npm-registry-fetch@19.0.06221e27#8576@npmcli/metavuln-calculator@9.0.2da81a37#8576cacache@20.0.16b4c5f9#8576@npmcli/run-script@10.0.0b6bb9ae#8576pacote@21.0.31b4433f#8576@npmcli/map-workspaces@5.0.0ceae674#8576@npmcli/package-json@7.0.14f37534#8576 remove read-package-json-fast
4059dfa#8576 properly use arborist and cache in test (@owlstronaut)402a0ab#8576@npmcli/template-oss@4.25.1(@wraithgar)
9.1.4 (2025-09-03)
208c06e#8448 peer edge crash due to no parent or detached node (#8448) (@milaninfy)3b54e9c#8534 installLinks works with transitive external file dependencies (#8534) (@owlstronaut)ed71acb#8473 arborist: #8472 Keeps the registry protocol when modifying resolve URL (#8473) (@Jeepsboucher, Jean-Philippe Boucher)
619d43e#8540 fix pruner and reify tests for optional peer deps (#8540) (@liamcmitchell, Liam Mitchell)
9.1.3 (2025-07-24)
6dbe21a#8436 local transitive dependencies with --install-links=true (@owlstronaut)8042af3#8431 prune optional peer dependencies that are no longer explicitly depended on (#8431) (@G-Rath)c457c75#8430 remove duplicate loop (#8430) (@G-Rath)f7b056f#8400 clean up audit-report code (#8400) (@wraithgar)f163d01#8372 use omit when checking ideal tree engine (#8372) (@owlstronaut)
3f60b5f#8383@npmcli/template-oss@4.24.4(#8383) (@wraithgar)01f8cc6#8381@npmcli/template-oss@4.24.3(#8381) (@wraithgar)
9.1.2 (2025-06-11)
887385d#8356 arborist: use hosted-git-info to correctly parse resolved git urls (#8356) (@milaninfy)
9.1.1 (2025-05-21)
9.1.0 (2025-05-15)
d5bcf38#8268 arborist: Add better error message when lockfile is malformed (#8268) (@owlstronaut)5e1fed9#8290 arborist: improve README markdown (#8290) (@mbtools)0886e7a#8222 preserve registry path when replacing a host (@owlstronaut)815311b#8206 arborist: workspaces correctly path to file: packages from overrides (@owlstronaut)
9.0.2 (2025-04-08)
a96d8f6#8184 arborist: omit failed optional dependencies from installed deps (#8184) (@owlstronaut, @zkat)04f53ce#8180 arborist: safely fallback on unresolved $ dependency references (#8180) (@owlstronaut)885accd#8185 arborist: only replace hostname for resolved URL (#8185) (@billy-briggs-dev)8b7bb12#8168 arborist: Allow downgrades to hoisted version dedupe workspace i… (#8168) (@owlstronaut)1642556#8160 arborist: workspaces respect overrides on subsequent installs (#8160) (@owlstronaut)
88a7b52#8174 add load-virtual and reify tests for workspace override test coverage (#8174) (@owlstronaut, @TrevorBurnham)
9.0.1 (2025-03-05)
b9225e5#8089 resolve override conflicts and apply correct versions (#8089) (@owlstronaut)d586f3b#8117 remove duplicate var (#8117) (@TrevorBurnham)811ca29#8115 stop working around bug fixed innpm-package-arg@12.0.2(@TrevorBurnham)
9.0.0 (2024-12-16)
9.0.0-pre.1 (2024-12-06)
- 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.
bun.lockbfiles are now included in the strict ignore list during packing
c0bcc2a#7955walk-up-path@4.0.04bf1901#7945@npmcli/metavuln-calculator@9.0.0ca84b22#7945pacote@21.0.0
9.0.0-pre.0 (2024-11-26)
--ignore-scriptsnow applies to all lifecycle scripts, includeprepare- npm will no longer fall back to the old audit endpoint if the bulk advisory request fails.
- @npmcli/arborist now supports node
^20.17.0 || >=22.9.0
080a0f2#7911 remove old audit fallback request (@wraithgar)3ffc08b#7831 for @npmcli/arborist sets node engine range to^20.17.0 || >=22.9.0(@reggi)
8.0.0 (2024-10-03)
@npmcli/arboristnow supports node^18.17.0 || >=20.5.0
5795987#7803 updateproggy@3.0.099ccae3#7803 updatebin-links@5.0.075786ad#7803 update@npmcli/query@4.0.01c25a1d#7803 update@npmcli/node-gyp@4.0.02d7fc3d#7803 update@npmcli/name-from-folder@3.0.01e09334#7803 update@npmcli/metavuln-calculator@8.0.0820e983#7803 update@npmcli/installed-package-contents@3.0.09cd6603#7803 updateread-package-json-fast@4.0.08206c4f#7803 updatessri@12.0.0f6909a0#7803 updateproc-log@5.0.0f9b2e18#7803 updateparse-conflict-json@4.0.0e7ab206#7803 updatepacote@19.0.0d13a20b#7803 updatenpm-registry-fetch@18.0.1092f41f#7803 updatenpm-pick-manifest@10.0.050a7bc8#7803 updatenpm-package-arg@12.0.0591130d#7803 updatenpm-install-checks@7.1.0105fa2b#7803 updatenopt@8.0.07214149#7803 updatejson-parse-even-better-errors@4.0.06deae9e#7803 updatehosted-git-info@8.0.0034c729#7803 updatecacache@19.0.1538a4cc#7803 update@npmcli/run-script@9.0.1b80d048#7803 update@npmcli/redact@3.0.02076368#7803 update@npmcli/package-json@6.0.1feac87c#7803 update@npmcli/map-workspaces@4.0.1dd90f9e#7803 update@npmcli/fs@4.0.0
be1e6da#7803 updateminify-registry-metadata@4.0.0(@reggi)2072705#7803 update@npmcli/eslint-config@5.0.1(@reggi)8035725#7756@npmcli/template-oss@4.23.3(@wraithgar)
7.5.4 (2024-07-09)
6f33d74#7579 arborist: safeguard against null node.target in flag calculation (#7579) (@AmirSa12)a8e666e#7602 arborist: condition to include name field in package-lock fixed (#7602) (@milaninfy)
7.5.3 (2024-05-29)
7.5.2 (2024-05-15)
12f103c#7533 add first param titles to logs where missing (#7533) (@lukekarrys)e290352#7499 revert DepsQueue to re-sort on pop() (#7499) (@lukekarrys)56a27fa#7494 avoid caching manifests as promises (@wraithgar)722c0fa#7463 limit packument cache size based on heap size (@wraithgar)effe910#7475 don't omit license from stored manifests (#7475) (@lukekarrys)
fd42986#7498@npmcli/fs@3.1.1ea0b07d#7482pacote@18.0.65b2317b#7463 add lru-cache7e15b6d#7480@npmcli/metavuln-calculator@7.1.18b20f8c#7480ssri@10.0.6a9a6dcd#7480pacote@18.0.5e2fdb65#7480npm-pick-manifest@9.0.1e71f541#7480nopt@7.2.118c3b40#7480json-parse-even-better-errors@3.0.2714e3e1#7480hosted-git-info@7.0.2f94d672#7480cacache@18.0.343331e4#7480bin-links@4.0.463ef498#7457npm-registry-fetch@17.0.1
7.5.1 (2024-04-30)
a1b95eb#7453 linting: no-unused-vars (@wraithgar)abcbc54#7430 reify: cleanup of Symbols (#7430) (@wraithgar)57ebebf#7418 update repository.url in package.json (#7418) (@wraithgar)
80eec03#7453@npmcli/redact@2.0.0a7145d4#7453npm-registry-fetch@17.0.09da5738#7437@npmcli/run-script@8.1.0(#7437)
7.5.0 (2024-04-25)
9123de4#7373 do all output over proc-log events (@lukekarrys)9622597#7339 refactor terminal display (#7339) (@lukekarrys)
78447d7#7399 prefer fs/promises over promisify (#7399) (@lukekarrys)6512112#7378 use proc-log for all timers (@lukekarrys)
36adff3#7408pacote@18.0.2486d46c#7408@npmcli/installed-package-contents@2.1.0157d0ae#7408@npmcli/package-json@5.1.0fc6e291#7392proc-log@4.2.0(#7392)38ed048#7378@npmcli/metavuln-calculator@7.1.07678a3d#7378proc-log@4.1.087f6c09#7373@npmcli/metavuln-calculator@7.0.1b8f8b41#7373@npmcli/run-script@8.0.079f79c7#7373proc-log@4.0.09027266#7373pacote@18.0.0ee4b3e0#7373npm-registry-fetch@16.2.1ac98fd3#7373npm-package-arg@11.0.29351570#7373@npmcli/package-json@5.0.3
7.4.2 (2024-04-10)
7.4.1 (2024-04-03)
8cab136#7324 ensure maxSockets is respected (#7324) (@lukekarrys)9bffa13#7320 query: properly return :missing nodes (#7320) (@wraithgar)
87a61fc#7334npm-registry-fetch@16.2.06fd94f2#7329minimatch@9.0.48cab136#7324agent-base@7.1.1(@lukekarrys)
7.4.0 (2024-02-28)
6d1789c#7237 Arborist code cleanup (#7237) (@wraithgar)ed17276#7218 query-selector: don't look up private packages on :outdated (@wraithgar)
7.3.1 (2024-01-24)
d3f1845#7124 clean up idealTree code (@wraithgar)8382fb3#7126 fetch full packument so that libc can be assessed (@styfle, @ljharb)
7.3.0 (2024-01-10)
6673c77#6914 add--libcoption to override platform specific install (#6914) (@wraithgar, @Brooooooklyn)
7.2.2 (2023-12-06)
ae2d982#7027 arborist:node.targetcan benullwhen it is a file dep or symlink (#7027) (@ljharb, @lukekarrys)f875caa#6998 clean up shrinkwrap code (#6998) (@wraithgar)
f656b66#7062@npmcli/template-oss@4.21.3(#7062) (@lukekarrys)9754b17#7051 use global npm for workspace tests (@lukekarrys)3891757#7051@npmcli/template-oss@4.21.2(@lukekarrys)
7.2.1 (2023-10-31)
7.2.0 (2023-10-02)
81a460f#6732 add package-lock-only mode to npm query (@wraithgar)0d29855#6732 add no-package-lock mode to npm audit (@wraithgar)
0860159#6829 ensure workspace links query parents correctly (#6829) (@Carl-Foster)bef7481#6782 query with workspace descendents (#6782) (@bdehamer)
aa6728b#6859tar@6.2.0ce9089f#6859npm-package-arg@11.0.10a47af5#6859hosted-git-info@7.0.13ebc474#6859@npmcli/query@3.0.1
7.1.0 (2023-09-08)
7.0.0 (2023-08-31)
fb31c7etrigger release process (@lukekarrys)
7.0.0-pre.0 (2023-08-31)
- support for node <=16.13 has been removed
- support for node 14 has been removed
6b251b1#6706 drop node 16.13.x support (@lukekarrys)e3a377d#6706 drop node14 support (@lukekarrys)
eb41977#6706@npmcli/run-script@7.0.1f334466#6706pacote@17.0.4bb63bf9#6706@npmcli/run-script@7.0.043831d0#6706pacote@17.0.344e8fec#6706pacote@17.0.22ee0fb3#6706npm-registry-fetch@16.0.081ff4df#6706pacote@17.0.1c3a1a02#6706@npmcli/metavuln-calculator@7.0.0cac0725#6706pacote@17.0.0fd8beaf#6706npm-pick-manifest@9.0.0c784b57#6706npm-package-arg@11.0.0729e893#6706hosted-git-info@7.0.07af81c7#6706cacache@18.0.0b0849ab#6706@npmcli/package-json@5.0.061e9b00#6706@npmcli/metavuln-calculator@6.0.14c9eb17#6706npm-install-checks@6.2.088ece81#6706npm-pick-manifest@8.0.29117a4f#6706ssri@10.0.55eea975#6706cacache@17.1.4ca33c98#6706@npmcli/metavuln-calculator@6.0.0edbc25a#6706pacote@16.0.05d0d859#6706npm-registry-fetch@15.0.0
6.3.0 (2023-07-05)
6.2.10 (2023-06-21)
f5b9713#6549 make omit flags work properly with workspaces (#6549) (@Rayyan98, @lukekarrys)40d7e09#6555 remove unnecessary package.json values (#6555) (@lukekarrys)
6.2.9 (2023-05-03)
6.2.8 (2023-04-19)
6.2.7 (2023-04-05)
6.2.6 (2023-03-30)
6.2.5 (2023-03-08)
6.2.4 (2023-03-02)
962a12e#6193 arborist: dependencies from registries with a peerDependency on a workspace (#6193) (@ixalon)
6.2.3 (2023-02-22)
6.2.2 (2023-02-07)
12ec7eeremove unused package.json scripts (@lukekarrys)
6.2.1 (2023-02-01)
721fe3f#6118read-package-json-fast@3.0.26e4a649pacote@15.0.81820afecacache@17.0.44b8046e@npmcli/name-from-folder@2.0.01d4be7a@npmcli/map-workspaces@3.0.1a39556f@npmcli/template-oss@4.11.3
6.2.0 (2023-01-25)
6.1.6 (2023-01-12)
b584af0#6022 remove unneeded param default (@wraithgar)2ba1171streamline workspace loading code (@wraithgar)2383deb#6037 clean urls from arborist, owner, and ping commands (#6037) (@lukekarrys)c52cf6b#5960 properly handle directory, file, git and alias specs in overrides (@nlf)
6.1.5 (2022-12-07)
372d158#5935minimatch@5.1.1(#5935)0a3fe00#5933minipass@4.0.0cf0a174ssri@10.0.13da9a1apacote@15.0.7fee9b66npm-registry-fetch@14.0.3e940917cacache@17.0.3875bd56npm-package-arg@10.1.0
6.1.4 (2022-11-30)
6.1.3 (2022-11-16)
6.1.2 (2022-11-09)
6.1.1 (2022-11-02)
1f5382d#5789 don't setstdioStringfor any spawn/run-script calls (@lukekarrys)0c5834e#5758 use hosted-git-info to parse registry urls (#5758) (@lukekarrys)
6.1.0 (2022-10-26)
6.0.0 (2022-10-19)
586e78dempty commit to trigger all workspace releases (@lukekarrys)
6.0.0-pre.5 (2022-10-19)
- deprecate boolean install flags in favor of
--install-strategy- deprecate --global-style, --global now sets --install-strategy=shallow
- deprecate --legacy-bundling, now sets --install-strategy=nested
- this package no longer attempts to change file ownership automatically
de2d33fadd --install-strategy=hoisted|nested|shallow, deprecate --global-style, --legacy-bundling (#5709) (@fritzy)475e9b6#5703 do not alter file ownership (@nlf)
1afe5baaccount for new npm-package-arg behavior (@wraithgar)
88137a3npmlog@7.0.12008ea6npm-package-arg@10.0.0,pacote@15.0.2aa01072#5707 update the following dependencies
6.0.0-pre.4 (2022-10-05)
6.0.0-pre.3 (2022-09-30)
npm packnow follows a strict order of operations when applying ignore rules. If a files array is present in the package.json, then rules in .gitignore and .npmignore files from the root will be ignored.
3ae796dimplement newnpm-packlistbehavior (@lukekarrys)
6.0.0-pre.2 (2022-09-23)
ebf167badd:outdatedpseudo selector (@nlf)
d030f10@npmcli/query@2.0.0
6.0.0-pre.1 (2022-09-14)
f3b0c43keep saveTypes separate for eachadd(@wraithgar)
6.0.0-pre.0 (2022-09-08)
- workspaces: all workspace packages are now compatible with the following semver range for node:
^14.17.0 || ^16.13.0 || >=18.0.0
e95017a#5485 feat(workspaces): update supported node engines in package.json (@lukekarrys)09c46e8#5324 feat(arborist): allow for selectors and function names with :semver pseudo selector (@nlf)
fe926ed#5484 fix: don't mark workspaces as invalid if installing links (@wraithgar)548e70e#5376 fix: link.target setter (@wraithgar)2db6c08#5376 fix: loadActual cleanup (@wraithgar)
5.6.1 (2022-08-31)
1e84102#5350 fix: create links relative to the target (@wraithgar)ea5e3a3#5350 fix: inline single-use functions (@wraithgar)645c680#5329 fix: updateindex.jsspelling error in comment (@KevinBrother)bd2ae5d#5323 fix: linting (@wraithgar)
1286f03#5381 deps:unique-filename@2.0.12c4e387#5381 deps:hosted-git-info@5.1.0b12ac01#5381 deps:npm-pick-manifest@7.0.27fbf6f7#5381 deps:bin-links@3.0.326d2e55#5381 deps:@npmcli/query@1.2.0a79ee00#5381 deps:cacache@16.1.38ab12dc#5323 deps:@npmcli/eslint-config@3.1.0
5.6.0 (2022-08-17)
- arborist: add :overridden pseudo selector (d221f72)
- arborist: add overridden getter to Node class (e6d4304)
- query: support :overridden pseudo selector (0d4ed0f)
5.5.0 (2022-08-10)
- arborist: add option to forcibly skip loading a virtual tree (96b6781)
- query: tell arborist to load an actual tree, not a virtual one (9078e27)
- nopt@6.0.0 (7f31b85)
5.4.0 (2022-08-03)
- add --replace-registry-host=<npmjs|always|never> (#4860) (703dbbf)
- add --replace-registry-host=<npmjs|always|never>| (703dbbf)
- add npm query cmd (#5000) (3c024ac)
- arborist: fix bare attribute queries (#5248) (8233fca)
- arborist: pass the edge to fromPath in order to determine correct path (#5233) (050284d)
- arborist: use the sourceReference root rather than the node root for overrides (#5227) (47cc95d), closes #4395
5.3.1 (2022-07-27)
5.3.0 (2022-07-11)
5.2.3 (2022-06-23)
5.2.2 (2022-06-22)
5.2.1 (2022-06-01)
5.2.0 (2022-05-10)
5.1.1 (2022-04-26)
- @npmcli/map-workspaces@2.0.3 (3f2b24a)
- cacache@16.0.6 (532883f)
- npmlog@6.0.2 (5e31322)
- semver@7.3.7 (c51e553)
5.1.0 (2022-04-19)
- arborist: add support for installLinks (0ebadf5)
- arborist: when replacing a Link with a Node, make sure to remove the Link target from the root (3d96494)
5.0.6 (2022-04-13)
- arborist: don't skip adding advisories to audit based on name/range (aa4a4da), closes #4681
- arborist: when reloading an edge, also refresh overrides (4d676e3)
5.0.5 (2022-04-06)
- replace deprecated String.prototype.substr() (#4667) (e3da5df)
- update readme badges (#4658) (2829cb2)
- @npmcli/arborist@5.0.4 (679e569)
- @npmcli/move-file@2.0.0 (e9b25cd)
- @npmcli/node-gyp@2.0.0 (0e87cac)
- @npmcli/package-json@2.0.0 (4a9a705)
- npm-install-checks@5.0.0 (ad99360)
- ssri@9.0.0 (a2781a3)
- treeverse@2.0.0 (1a90b9e)
5.0.4 (2022-03-31)
- arborist: handle link nodes in old lockfiles correctly (6f9cb49)
- arborist: identify and repair invalid nodes in the virtual tree (bd96ae4)
- arborist: make sure resolveParent exists before checking props (18b8b94)
- make sure we loadOverrides on the root node in loadVirtual() (99d8845)
- only call npmlog progress methods if explicitly requested (#4644) (668ec7f), closes #3314
5.0.3 (2022-03-17)
- arborist: _findMissingEdges missing dependency due to inconsistent path separators (#4261) (0e7511d)
- arborist: save workspace version (#4578) (e9a2981)
5.0.2 (2022-03-10)
5.0.1 (2022-03-08)
- BREAKING CHANGE: root node is now included in inventory
- All parent/target/fsParent/etc. references set in
rootsetter, rather than the hodgepodge of setters that existed before. treeCheckfunction added, to enforce strict correctness guarantees whenARBORIST_DEBUG=1in the environment (on by default in Arborist tests).
- Release for npm v7 beta
- Fully functional
- Proof of concept
- Before this, it was
read-package-tree