Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2160 commits
Select commit Hold shift + click to select a range
21ea382
fix(arborist): resolve sibling override sets via common ancestor (#9110)
manzoorwanijk Mar 16, 2026
03af94d
fix: skip synopsis code block when command has no usage
owlstronaut Mar 17, 2026
98ccf92
chore: fix snap tests
owlstronaut Mar 17, 2026
8eff5fb
feat(audit): add --include-attestations flag to output sigstore bundl…
mitchdenny Mar 18, 2026
e839b07
fix: clear exclusive param siblings when setting from CLI (#9023)
umeshmore45 Mar 18, 2026
ce195dc
deps: cacache@20.0.4
wraithgar Mar 18, 2026
920e5ed
chore: test snapshots
wraithgar Mar 18, 2026
82deab6
deps: make-fetch-happen@15.0.5
wraithgar Mar 18, 2026
e5a7e22
deps: lru-cache@11.2.7
wraithgar Mar 18, 2026
7e9d538
chore: dev dependency updates
wraithgar Mar 18, 2026
d273380
fix(config): make prefer-offline and prefer-online exclusive (#9129)
mvanhorn Mar 18, 2026
8dcfe69
deps: @sigstore/sign@4.1.1
wraithgar Mar 18, 2026
4d5f7d9
deps: @gar/promise-retry@1.0.3
wraithgar Mar 18, 2026
03f4c3a
deps: @sigstore/tuf@4.0.2
wraithgar Mar 18, 2026
95fa7f4
chore: fix docs test snapshot (#9132)
wraithgar Mar 18, 2026
1afa738
chore: release 11.12.0
github-actions[bot] Mar 18, 2026
d1ee8a5
docs: Add note on relative path prefix for npm publish (#9140)
pydsigner Mar 23, 2026
596706a
fix: revert prefer-offline/prefer-online exclusivity (#9129)
owlstronaut Mar 24, 2026
63b9a7c
chore: release 11.12.1
github-actions[bot] Mar 24, 2026
05dbba5
chore: enable prerelease mode (#9195)
wraithgar Apr 6, 2026
07552f5
chore: don't run npm update in CI
owlstronaut Apr 13, 2026
45e44dd
feat: adds a backport script
owlstronaut Apr 13, 2026
6df5f91
chore: backports can trigger CI
owlstronaut Apr 13, 2026
7357d7f
fix!: remove npm adduser command
owlstronaut Feb 26, 2026
dcad8ec
fix: pass _isRoot context where missing (#9206)
wraithgar Apr 15, 2026
1d058b0
fix(arborist): do not install inert optional extraneous shared depend…
lovell Apr 15, 2026
8131de4
chore: add action permission for backport workflow
owlstronaut Apr 15, 2026
ccce5f6
deps: minipass-flush@1.0.6
wraithgar Mar 25, 2026
2501dd8
deps: tar@7.5.13
wraithgar Apr 8, 2026
87bb9d0
deps: minimatch@10.2.5
wraithgar Apr 8, 2026
6faa25e
deps: diff@8.0.4
wraithgar Apr 8, 2026
413e0a0
deps: lru-cache@11.3.3
wraithgar Apr 8, 2026
150231d
deps: picomatch@4.0.4
wraithgar Apr 8, 2026
b09a5ac
deps: tinyglobby@0.2.16
wraithgar Apr 8, 2026
9669d31
deps: @sigstore/protobuf-specs@0.5.1
wraithgar Apr 8, 2026
db7c1f8
feat: add `u` as alias for `update` command (#9163)
Ausoj Apr 16, 2026
738be10
feat: remove star commands (#9196)
wraithgar Apr 16, 2026
2e9b26e
fix: sync json output of pack and publish (#9247)
wraithgar Apr 16, 2026
4ef5b6e
fix!: stop resolving node path via whichnode
owlstronaut Feb 27, 2026
0dc5585
fix(arborist): handle `npm link` with install-strategy=linked
manzoorwanijk Mar 30, 2026
1ab20c8
fix(arborist): fix infinite loop with bundledDependencies and overrid…
everett1992 Apr 17, 2026
bc32d94
fix(arborist): propagate overrides through Link nodes to targets (#9198)
manzoorwanijk Apr 17, 2026
e9b0157
fix(libnpmexec): skip redundant reify for cached directory specs (#9255)
manzoorwanijk Apr 17, 2026
27567ab
fix: ignore intended error code
owlstronaut Apr 17, 2026
2397196
feat!: Remove Twitter and Freenode profile fields
owlstronaut Apr 21, 2026
2e5dcad
feat!: drop npm-shrinkwrap.json support
owlstronaut Apr 20, 2026
2ca36c4
chore: fixed non-functional typos throughout the codebase
opensourcezeal Apr 21, 2026
cc468a8
chore: refactor tests
wraithgar Apr 21, 2026
01d9acd
fix(pkg): output like npm view does, do not force json output
wraithgar Apr 22, 2026
79d394e
deps: is-cidr@6.0.4
owlstronaut Apr 22, 2026
799866f
deps: node-gyp@12.3.0
owlstronaut Apr 22, 2026
5af02ec
deps: lru-cache@11.3.5
owlstronaut Apr 22, 2026
b9332e6
chore: dev dependency updates
owlstronaut Apr 22, 2026
e20424b
fix!: don't install man pages in system locations
owlstronaut Feb 26, 2026
faf7348
fix!: align CycloneDX SBOM component names with SPDX (#9284)
cyphercodes Apr 28, 2026
916cb4b
feat: add allow-directory, allow-file, and allow-remote (#9287)
wraithgar Apr 28, 2026
b1965d6
fix!: refuse to pack when overrides apply to bundled packages
owlstronaut Apr 22, 2026
6628d05
fix(config): preserve min-release-age after flattening
lawrence3699 Apr 27, 2026
d36945d
fix!: do not unwrap single-item arrays in --json output
yetanotheraryan May 4, 2026
0629fbf
fix: prefer existing tree nodes for peerOptional deps (#9249) (#9283)
everett1992 May 4, 2026
32940e2
fix(arborist): ignore hidden entries in global update (#9299)
Grynn May 4, 2026
b8655c7
feat(arborist): add lockfileString() for in-memory lockfile generation
ljharb Apr 25, 2026
076551b
fix(arborist): clean up orphan top-level symlinks in linked strategy …
manzoorwanijk May 6, 2026
d623988
fix(sbom): dedupe per-node dependsOn / relationships (#9311)
mikaelkristiansson May 6, 2026
d68bd36
chore: add cli-triage team as codeowner (#9317)
owlstronaut May 6, 2026
37bd0c6
deps: cidr-regex@5.0.5
owlstronaut May 6, 2026
af65766
deps: ip-address@10.1.1
owlstronaut May 6, 2026
fbe1dd0
deps: socks@10.1.1
owlstronaut May 6, 2026
4259e57
chore: dev dependency updates
owlstronaut May 6, 2026
70af7b3
fix: remove settings (#9327)
owlstronaut May 8, 2026
4c7f6ba
fix(arborist): prune removed-workspace entries from package-lock.json
manzoorwanijk May 8, 2026
81793ae
fix(arborist): skip extraneous fsChildren in linked-strategy reify
manzoorwanijk May 8, 2026
6704ab2
docs: npm view with json outputs array docs update (#9335)
yetanotheraryan May 12, 2026
b61281d
chore: change test wording to not collide with tap (#9349)
owlstronaut May 12, 2026
e0f12f7
feat: add allow-git/allow-file/allow-directory/allow-remote configs
owlstronaut May 12, 2026
1f17566
fix: allow-remote=none does not block registry tarballs
owlstronaut May 12, 2026
f550eb4
fix: refactor #failureNode, adjust tests and safety
owlstronaut May 13, 2026
2c9587e
fix(arborist): only forward Link overrides when a rule names a target…
manzoorwanijk May 14, 2026
822ce86
fix(arborist): skip lockfile entries for optional deps with incomplet…
ecanturk May 15, 2026
c97b39b
docs: add example to optionalDependencies section (#9363)
verifizieren May 15, 2026
cf94dbe
feat: add permissions support to trust commands (#9248)
reggi May 20, 2026
ca585c8
fix: allow min-release-age in npmrc to coexist with --before
raazkhnl May 1, 2026
18ebb0f
fix: min-release-age=0 doesn't filter, honor cross-source precedence
owlstronaut May 18, 2026
254809e
feat: npm stage (#9201)
reggi May 20, 2026
2a13550
fix: key stage download --json output by package name (#9380)
reggi May 20, 2026
514c71b
deps: hosted-git-info@9.0.3
owlstronaut May 20, 2026
66c7ff1
deps: semver@7.8.0
owlstronaut May 20, 2026
91bd674
deps: tar@7.5.15
owlstronaut May 20, 2026
e36a4e3
deps: bin-links@6.0.2
owlstronaut May 20, 2026
1c4a796
deps: brace-expansion@5.0.6
owlstronaut May 20, 2026
b2717e4
deps: ip-address@10.2.0
owlstronaut May 20, 2026
a77416e
deps: lru-cache@11.5.0
owlstronaut May 20, 2026
d151521
deps: socks@2.8.9
owlstronaut May 20, 2026
f502c4f
chore: dev dependency updates
owlstronaut May 20, 2026
4296f64
chore: release 12.0.0-pre.0.0
github-actions[bot] May 20, 2026
d124c08
docs: Document `npm_old_version` and `npm_new_version` environment va…
36degrees May 21, 2026
c0fc549
fix(config): pause progress spinner during interactive editor spawn (…
Zelys-DFKH May 21, 2026
979518d
feat!: error on unknown configs, flags, and abbreviations (#9276)
owlstronaut May 21, 2026
2a03860
fix!: run root preinstall before reify
owlstronaut Apr 21, 2026
5fc9bc0
chore: sanitize newlines in flags table default and type values (#9393)
reggi May 26, 2026
6237783
fix: exempt local project introspection from allow-directory
owlstronaut May 26, 2026
33aebaa
fix: fix typo of fullMetadata
owlstronaut May 26, 2026
7068d42
feat: Phase 1 of `allowScripts` opt-in install-script policy (#9360)
JamieMagee May 27, 2026
c9be2d1
feat: publish --access=private alias for restricted (#9153)
reggi May 27, 2026
b77850e
fix: skip hidden lockfile save on dry run (#9395)
puneetdixit200 May 27, 2026
dac7ff6
fix(arborist): drop self-link materialization for undeclared workspac…
manzoorwanijk May 27, 2026
f2e4a28
feat: add a global npmignore file (#9351)
ljharb May 27, 2026
577d61d
deps: make-fetch-happen@15.0.6
owlstronaut May 27, 2026
8be4c04
deps: semver@7.8.1
owlstronaut May 27, 2026
11cd66e
deps: @npmcli/agent@4.0.2
owlstronaut May 27, 2026
11e7ac7
deps: @sigstore/core@3.2.1
owlstronaut May 27, 2026
d5ddef2
deps: @sigstore/verify@3.1.1
owlstronaut May 27, 2026
ee61b6e
deps: lru-cache@11.5.1
owlstronaut May 27, 2026
7f6c6ef
deps: sigstore@4.1.1
owlstronaut May 27, 2026
d28783e
deps: undici@6.26.0
owlstronaut May 27, 2026
da63c79
chore: dev dependency updates
owlstronaut May 27, 2026
c5292fa
fix: use prerelease strategy without a bug
owlstronaut May 27, 2026
080e3b2
fix: block forbidden keys in Queryable setter to prevent prototype po…
12122J May 27, 2026
79b0c84
fix!: default opts.access to null to preserve registry behavior
owlstronaut May 27, 2026
a81f2f8
fix(arborist): read install scripts from disk on lockfile installs in…
JamieMagee May 28, 2026
b97edc0
fix(audit): don't apply min-release-age before filter when verifying …
JamieMagee May 28, 2026
6efac6e
fix(config): clarify --all help so it's accurate for approve-scripts …
JamieMagee Jun 1, 2026
9f3c97f
fix: sanitize package name in linked-strategy path construction
owlstronaut Jun 1, 2026
75bf7de
fix: respect allowScripts policy in prune, dedupe, uninstall, audit f…
JamieMagee Jun 1, 2026
fe41ae7
fix: show full parent command path in subcommand usage errors (#9404)
shaanmajid Jun 2, 2026
fe820b6
fix: invalid issue template YAML indentation (#9442)
fallintoplace Jun 2, 2026
6901bb1
fix: escape executable name in libnpmexec run-script (#9436)
rootvector2 Jun 2, 2026
76f8059
fix: flatten path separators in pack output filename (#9446)
rootvector2 Jun 2, 2026
caa3295
feat!: default allow-git and allow-remote to none
owlstronaut Jun 2, 2026
aac80dc
docs: update minimum npm required for npm trust
meeech Jun 2, 2026
6603b2c
fix: suggest --allow-scripts for global installs in unreviewed-script…
JamieMagee Jun 3, 2026
6be874b
fix: list pending scripts in approve-scripts when ignore-scripts is s…
JamieMagee Jun 3, 2026
64e3f79
feat: allowScripts tooling and inBundle hardening (#9480)
JamieMagee Jun 3, 2026
5cd5150
feat: default-deny install scripts (allowScripts opt-in) [v12]
JamieMagee Jun 3, 2026
275bc69
fix(arborist): clean up orphaned scoped store entries in linked strategy
manzoorwanijk May 30, 2026
a105799
fix(arborist): link meta-only optional peers in linked strategy
manzoorwanijk Jun 2, 2026
bf623e0
fix: validate registry path for allow-remote tarballs
Abhinav-143x Jun 3, 2026
2cbb13b
fix: recognize allowScripts for local link targets (#9490)
cyphercodes Jun 5, 2026
0e55f97
fix: pass script-shell to publish lifecycle hooks
Zelys-DFKH Jun 4, 2026
4bcba54
fix(arborist): apply registry-tarball allow-remote exemption in linke…
manzoorwanijk Jun 5, 2026
455aa4a
docs: use the latest version for global update and outdated's `wanted…
liangmiQwQ Jun 5, 2026
bcf01c6
docs: clarify package.json override value specs (#9505)
ded-furby Jun 8, 2026
d70e116
fix(arborist): honor allow-remote=root for root-direct remote tarball…
manzoorwanijk Jun 8, 2026
7a997ac
chore: update issue templates (#9512)
owlstronaut Jun 8, 2026
4e2496a
chore: update issue templates - better language
owlstronaut Jun 8, 2026
357e8cd
docs: approve-scripts only throws EGLOBAL when run with -g
JamieMagee Jun 9, 2026
9b5c7b0
fix(config): strict-allow-scripts default blocks with a warning, not …
JamieMagee Jun 9, 2026
34dbdf5
fix(arborist): enforce allowScripts for file:/link: dep scripts
JamieMagee Jun 9, 2026
fc6268a
fix: keep nested file: deps and re-resolve changed git refs (#9523)
owlstronaut Jun 10, 2026
f6a9aad
feat: differentiate GitHub Actions environments in user-agent (#9517)
reggi Jun 10, 2026
c3e1a71
feat: add min-release-age-exclude config
JamieMagee Jun 10, 2026
b3b7197
test: regenerate smoke snapshot for strict-allow-scripts description
JamieMagee Jun 10, 2026
f6270d1
fix: emit valid JSON from approve-scripts/deny-scripts --json
owlstronaut Jun 10, 2026
abf78b3
fix: match dotted and versioned args in approve-scripts/deny-scripts
owlstronaut Jun 11, 2026
acdd6d5
chore: bumping @npmcli/template-oss from 4.29.0 to 5.1.0
owlstronaut Jun 16, 2026
18eb967
feat!: bump to new node engine range
owlstronaut Jun 16, 2026
d25a179
chore: template-oss-apply
owlstronaut Jun 16, 2026
4d234b2
deps: @npmcli/map-workspaces@6.0.0
owlstronaut Jun 16, 2026
f86a019
deps: @npmcli/metavuln-calculator@10.0.0
owlstronaut Jun 16, 2026
0be6ae2
deps: @npmcli/package-json@8.0.0
owlstronaut Jun 16, 2026
f0eaef3
deps: @npmcli/promise-spawn@10.0.0
owlstronaut Jun 16, 2026
27c4dcc
deps: @npmcli/redact@5.0.0
owlstronaut Jun 16, 2026
9d13ebf
deps: @npmcli/run-script@11.0.0
owlstronaut Jun 16, 2026
9bbdefb
deps: @sigstore/tuf@5.0.0
owlstronaut Jun 16, 2026
0d15aec
deps: abbrev@5.0.0
owlstronaut Jun 16, 2026
66d46bc
deps: cacache@21.0.1
owlstronaut Jun 16, 2026
d867351
deps: hosted-git-info@10.1.1
owlstronaut Jun 16, 2026
406820a
deps: ini@7.0.0
owlstronaut Jun 16, 2026
350fb18
deps: init-package-json@9.0.0
owlstronaut Jun 16, 2026
d44db96
deps: is-cidr@7.0.0
owlstronaut Jun 16, 2026
30e89d9
deps: json-parse-even-better-errors@6.0.0
owlstronaut Jun 16, 2026
40395b8
deps: make-fetch-happen@16.0.1
owlstronaut Jun 16, 2026
471309f
deps: nopt@10.0.1
owlstronaut Jun 16, 2026
faf97e5
deps: npm-audit-report@8.0.0
owlstronaut Jun 16, 2026
5e1d513
deps: npm-install-checks@9.0.0
owlstronaut Jun 16, 2026
d80859a
deps: npm-package-arg@14.0.0
owlstronaut Jun 16, 2026
998ff1d
deps: npm-pick-manifest@12.0.0
owlstronaut Jun 16, 2026
1fd247a
deps: npm-profile@13.0.0
owlstronaut Jun 16, 2026
1f9c567
deps: npm-registry-fetch@20.0.1
owlstronaut Jun 16, 2026
171bba3
deps: npm-user-validate@5.0.0
owlstronaut Jun 16, 2026
a44c1cf
deps: pacote@22.0.0
owlstronaut Jun 16, 2026
8f85646
deps: parse-conflict-json@6.0.0
owlstronaut Jun 16, 2026
21df0ab
deps: proc-log@7.0.0
owlstronaut Jun 16, 2026
3484d7f
deps: read@6.0.0
owlstronaut Jun 16, 2026
68eb39c
deps: semver@7.8.4
owlstronaut Jun 16, 2026
1502286
deps: ssri@14.0.0
owlstronaut Jun 16, 2026
13d97ac
deps: tar@7.5.16
owlstronaut Jun 16, 2026
5032af3
deps: validate-npm-package-name@8.0.0
owlstronaut Jun 16, 2026
e459d7a
deps: which@7.0.0
owlstronaut Jun 16, 2026
370f9c6
deps: node-gyp@13.0.0
owlstronaut Jun 16, 2026
2f5da83
deps: @npmcli/fs@6.0.0
owlstronaut Jun 16, 2026
b62db95
deps: bin-links@7.0.0
owlstronaut Jun 16, 2026
95ed19c
deps: regenerate bundled dependencies
owlstronaut Jun 16, 2026
428afa6
deps: sigstore@5.0.0
owlstronaut Jun 16, 2026
3dc18e5
deps: @npmcli/git@8.0.0
owlstronaut Jun 16, 2026
cc96d57
deps: @npmcli/installed-package-contents@5.0.0
owlstronaut Jun 16, 2026
a12e2c8
deps: @npmcli/name-from-folder@5.0.0
owlstronaut Jun 16, 2026
cc45055
deps: @npmcli/node-gyp@6.0.0
owlstronaut Jun 16, 2026
ad05528
deps: @npmcli/git@8.0.0
owlstronaut Jun 16, 2026
5dce6fb
deps: npm-packlist@11.2.0
owlstronaut Jun 16, 2026
ee3d87f
chore: @npmcli/template-oss@5.1.1
owlstronaut Jun 16, 2026
0323f2d
chore: template-oss-apply
owlstronaut Jun 16, 2026
3ef66bb
deps: bundle arborist runtime deps for bootstrap
owlstronaut Jun 16, 2026
d4e0a70
deps: @tufjs/repo-mock@5.0.0
owlstronaut Jun 17, 2026
1453954
chore: nock@14.0.0
owlstronaut Jun 17, 2026
fc3ef5a
fix: adapt to @npmcli/run-script@11 breaking changes
owlstronaut Jun 17, 2026
be8053c
feat: warn when min-release-age blocks an audit fix (#9544)
JamieMagee Jun 18, 2026
fc80bb3
feat!: remove default license for npm init
owlstronaut Jun 18, 2026
1db885c
feat: native dependency patching (npm patch add/commit/update/ls/rm) …
manzoorwanijk Jun 18, 2026
5ddf6cc
fix(patch): keep the update marker on a no-op commit so a retry final…
manzoorwanijk Jun 18, 2026
ce7681f
feat: packageExtensions for root-owned dependency manifest repairs (#…
manzoorwanijk Jun 18, 2026
f9c977c
fix(arborist): re-apply packageExtensions to the linked actual tree (…
manzoorwanijk Jun 18, 2026
cfda867
fix(arborist): warn once for workspace packageExtensions selector mat…
manzoorwanijk Jun 18, 2026
62b0694
fix(patch): explain out-of-sync lockfile after --ignore-patch-failure…
manzoorwanijk Jun 18, 2026
a847d28
fix(patch): warn when `patch update --to` targets an uninstalled vers…
manzoorwanijk Jun 18, 2026
315e3bd
fix(arborist): drop orphaned patch entry on uninstall instead of EPAT…
manzoorwanijk Jun 18, 2026
8bbd70d
fix(arborist): allow-remote exemption for proxy/mirror-fronted regist…
manzoorwanijk Jun 18, 2026
afce424
fix(arborist): expose store node_modules via NODE_PATH for linked-str…
manzoorwanijk Jun 18, 2026
9cbba72
deps: npm-profile@13.0.1
owlstronaut Jun 18, 2026
e96a7de
fix!: Preserve https protocol when working with git (#8703)
oldium Jun 19, 2026
059c06e
chore: add web-login proxy doneUrl regression for npm-profile fix (#9…
manzoorwanijk Jun 19, 2026
ed72962
chore: release 12.0.0-pre.1
github-actions[bot] Jun 19, 2026
00b9f9f
fix(arborist): symlink workspace file: deps on non-workspace local pa…
manzoorwanijk Jun 22, 2026
1a9ce8e
fix(link): scope `npm link <path> --workspace` to the workspace, not …
manzoorwanijk Jun 22, 2026
ce11dcf
deps: npm-packlist@11.3.0
owlstronaut Jun 22, 2026
58cd8f5
feat: `.npm-extension` transformManifest for imperative manifest repa…
manzoorwanijk Jun 22, 2026
7655822
fix(arborist): don't flag inert optional deps in strict-allow-scripts…
JamieMagee Jun 23, 2026
971500f
fix(approve-scripts): approve deps with no resolved URL by name (#9606)
JamieMagee Jun 23, 2026
989f571
fix(arborist): audit the non-isolated tree under the linked strategy …
manzoorwanijk Jun 24, 2026
851558c
fix(arborist): don't load store packages' devDependencies as required…
manzoorwanijk Jun 24, 2026
0c4dd41
feat: namespace install-script approval commands under npm install-sc…
manzoorwanijk Jun 24, 2026
690bf17
fix(arborist): fix audit-report determinism due to dropped via links …
arjun-vegeta Jun 24, 2026
2aa1c7c
fix(arborist): validate peerOptional conflicts in no-save mutations (…
dale-lakes Jun 24, 2026
6968015
fix(arborist): record the linked .store layout in the hidden lockfile…
manzoorwanijk Jun 24, 2026
981e249
fix(arborist): remove stale .bin shims after uninstall under linked (…
manzoorwanijk Jun 24, 2026
0ffce98
fix(arborist): repair wrong-but-existing symlink target in linked str…
manzoorwanijk Jun 24, 2026
2b976b5
fix(arborist): invalid filterNode crash under the linked strategy (#9…
manzoorwanijk Jun 24, 2026
7e29a19
fix(ls): restore 100% coverage on latest after #9626 (#9646)
manzoorwanijk Jun 24, 2026
d6fbb55
fix(exec): resolve workspace-local bin under the linked install strat…
manzoorwanijk Jun 24, 2026
ca92323
fix(arborist): clean up stale .store and hoisted dirs on strategy swi…
manzoorwanijk Jun 24, 2026
c4e5356
feat(install-scripts): prune unused allowScripts entries (#9651)
JamieMagee Jun 25, 2026
60d0d3d
fix(allowScripts): close three enforcement gaps (#9652)
JamieMagee Jun 25, 2026
803ba70
fix(query): report logical dep location under linked strategy (#9656)
manzoorwanijk Jun 25, 2026
6a5bf26
fix(arborist): load transitive optional deps into linked actual tree …
manzoorwanijk Jun 25, 2026
f9e3a80
fix(arborist): correct dev/prod dep flags for workspaces under the li…
manzoorwanijk Jun 25, 2026
541c286
fix(arborist): forward transitive overrides through linked store link…
manzoorwanijk Jun 25, 2026
0c33947
fix(reify): report added count for fresh linked installs (#9661)
manzoorwanijk Jun 25, 2026
ae6dbeb
fix(arborist): surface undeclared workspaces under the linked strateg…
manzoorwanijk Jun 25, 2026
968e42f
fix(arborist): apply overrides across a file:/workspace link boundary…
manzoorwanijk Jun 26, 2026
86416a6
feat: graduate the linked install strategy from experimental to stabl…
manzoorwanijk Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
12 changes: 12 additions & 0 deletions .commitlintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/* This file is automatically added by @npmcli/template-oss. Do not edit. */

module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'deps', 'chore']],
'header-max-length': [2, 'always', 80],
'subject-case': [0],
'body-max-line-length': [0],
'footer-max-line-length': [0],
},
}
14 changes: 14 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/* This file is automatically added by @npmcli/template-oss. Do not edit. */

'use strict'

const { readdirSync: readdir } = require('fs')

const localConfigs = readdir(__dirname)
Expand All @@ -6,6 +10,16 @@ const localConfigs = readdir(__dirname)

module.exports = {
root: true,
ignorePatterns: [
'tap-testdir*/',
'/node_modules/.bin/',
'/node_modules/.cache/',
'docs/**',
'smoke-tests/**',
'mock-globals/**',
'mock-registry/**',
'workspaces/**',
],
extends: [
'@npmcli',
...localConfigs,
Expand Down
37 changes: 37 additions & 0 deletions .eslintrc.local.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
const { resolve, relative } = require('path')

// Create an override to lockdown a file to es6 syntax only
// and only allow it to require an allowlist of files
const rel = (p) => relative(__dirname, resolve(__dirname, p))
const braces = (a) => a.length > 1 ? `{${a.map(rel).join(',')}}` : a[0]

const es6Files = (e) => Object.entries(e).map(([file, allow]) => ({
files: `./${rel(file)}`,
parserOptions: {
ecmaVersion: 6,
},
rules: Array.isArray(allow) ? {
'node/no-restricted-require': ['error', [{
name: ['/**', `!${__dirname}/${braces(allow)}`],
message: `This file can only require: ${allow.join(',')}`,
}]],
} : {},
}))

module.exports = {
rules: {
'no-console': 'error',
},
overrides: es6Files({
'index.js': ['lib/cli.js'],
'bin/npm-cli.js': ['lib/cli.js'],
'lib/cli.js': ['lib/cli/validate-engines.js'],
'lib/cli/validate-engines.js': ['package.json'],
// TODO: This file should also have its requires restricted as well since it
// is an entry point but it currently pulls in config definitions which have
// a large require graph, so that is not currently feasible. A future config
// refactor should keep that in mind and see if only config definitions can
// be exported in a way that is compatible with ES6.
'bin/npx-cli.js': null,
}),
}
20 changes: 0 additions & 20 deletions .eslintrc.local.json

This file was deleted.

31 changes: 29 additions & 2 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,29 @@
/node_modules/** linguist-generated=false
/package-lock.json linguist-generated=false
# normalize all line endings by default
* text=auto

# our shell/bin scripts always need to be LF
/bin/* text eol=lf
/workspaces/arborist/bin/index.js text eol=lf
/configure text eol=lf

# our cmd scripts always need to be CRLF
/bin/**/*.cmd text eol=crlf

# ignore all line endings in node_modules since we dont control that
/node_modules/** -text

# the files we write should be LF so they can be generated cross platform
/node_modules/.gitignore text eol=lf
/workspaces/arborist/test/fixtures/.gitignore text eol=lf
/DEPENDENCIES.md text eol=lf
/DEPENDENCIES.json text eol=lf
/AUTHORS text eol=lf
/docs/lib/content/nav.yml text eol=lf

# fixture tarballs should be treated as binary
/workspaces/*/test/fixtures/**/*.tgz binary

# these hint to GitHub to show these files as not generated so they default to
# showing the full diff in pull requests
/node_modules/** linguist-generated=false
/package-lock.json linguist-generated=false
4 changes: 3 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
* @npm/cli-team
# This file is automatically added by @npmcli/template-oss. Do not edit.

* @npm/cli-team @npm/cli-triage
70 changes: 70 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: 🐞 Bug
description: File a bug/issue against the latest version of npm
title: "[BUG] <title>"
labels: [Bug, Needs Triage]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please [search here](https://github.com/npm/cli/issues) to see if an issue already exists for your problem.
options:
- label: I have searched the existing issues
required: true
- type: checkboxes
attributes:
label: This issue exists in the latest npm version
description: Please make sure you have installed the latest npm and verified it is still an issue.
options:
- label: I am using the latest npm
required: true
- type: checkboxes
attributes:
label: This is not just a request to bump a dependency for a CVE
description: npm bundles its dependencies and updates them on a regular cadence, so CVEs in our bundled dependencies are picked up automatically. Issues opened solely to request a dependency bump for a CVE will be closed. To report an actual vulnerability in npm, please follow our [security policy](https://github.com/npm/cli/blob/latest/SECURITY.md) instead.
options:
- label: This is not solely a request to bump a dependency for a CVE
required: true
- type: textarea
attributes:
label: Current Behavior
description: A clear & concise description of what you're experiencing.
validations:
required: false
- type: textarea
attributes:
label: Expected Behavior
description: A clear & concise description of what you expected to happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
value: |
1. In this environment...
2. With this config...
3. Run '...'
4. See error...
validations:
required: false
- type: textarea
attributes:
label: Environment
description: |
examples:
- **`npm -v`**: **npm**: 10.0.0
- **`node -v`**: **Node.js**: 18.0.0
- **OS Name**: Ubuntu 20.04
- **System Model Name**: Macbook Pro
- **`npm config ls`**: `; "user" config from ...`
value: |
- npm:
- Node.js:
- OS Name:
- System Model Name:
- npm config:
```ini
; copy and paste output from `npm config ls` here
```
validations:
required: false
63 changes: 0 additions & 63 deletions .github/ISSUE_TEMPLATE/bug_8.yml

This file was deleted.

7 changes: 5 additions & 2 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
blank_issues_enabled: true
contact_links:
- name: 🔒 Dependency CVE / security advisory in a bundled dependency
url: https://github.com/npm/cli/blob/latest/SECURITY.md
about: npm bundles its dependencies and updates them regularly, so CVEs in our bundled dependencies are picked up automatically. Please don't open an issue just to request a dependency bump for a CVE. To report a vulnerability in npm, see our security policy.
- name: ❓ Help with issues in older versions of the CLI
url: https://github.community/c/software-development/47
about: Find/file tickets with the community
- name: ⭐️ Feature Request
url: https://github.com/npm/feedback
url: https://github.com/orgs/community/discussions/categories/npm
about: Add your request or discuss the project w/ the community
- name: 📃 RFC
url: https://github.com/npm/rfcs
Expand All @@ -18,6 +21,6 @@ contact_links:
- name: 📫 Support
url: https://github.community/
about: For general support questions please open a topic over at github.community
- name: 🚑 Support Policy
- name: 🚑 Support Policy
url: https://github.com/npm/cli/wiki/Support-Policy
about: Information about what version(s) of the CLI we support
52 changes: 52 additions & 0 deletions .github/actions/create-check/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# This file is automatically added by @npmcli/template-oss. Do not edit.

name: 'Create Check'
inputs:
name:
required: true
token:
required: true
sha:
required: true
check-name:
default: ''
outputs:
check-id:
value: ${{ steps.create-check.outputs.check_id }}
runs:
using: "composite"
steps:
- name: Get Workflow Job
uses: actions/github-script@v7
id: workflow
env:
JOB_NAME: "${{ inputs.name }}"
SHA: "${{ inputs.sha }}"
with:
result-encoding: string
script: |
const { repo: { owner, repo}, runId, serverUrl } = context
const { JOB_NAME, SHA } = process.env

const job = await github.rest.actions.listJobsForWorkflowRun({
owner,
repo,
run_id: runId,
per_page: 100
}).then(r => r.data.jobs.find(j => j.name.endsWith(JOB_NAME)))

return [
`This check is assosciated with ${serverUrl}/${owner}/${repo}/commit/${SHA}.`,
'Run logs:',
job?.html_url || `could not be found for a job ending with: "${JOB_NAME}"`,
].join(' ')
- name: Create Check
uses: LouisBrunner/checks-action@v1.6.0
id: create-check
with:
token: ${{ inputs.token }}
sha: ${{ inputs.sha }}
status: in_progress
name: ${{ inputs.check-name || inputs.name }}
output: |
{"summary":"${{ steps.workflow.outputs.result }}"}
Loading