Commit Graph

10313 Commits

Author SHA1 Message Date
Khải
52556a858a refactor(test): some small polishments (#10603)
* test: full message

* refactor: consistent indentation

* docs: remove extraneous comment

* test: more cases
2026-02-12 22:54:13 +01:00
Zoltan Kochan
3e0a9acf5f fix: vulnerabilities 2026-02-12 22:41:33 +01:00
Zoltan Kochan
92f468b7bb chore: update pnpm-lock.yaml (#10580) 2026-02-12 22:35:02 +01:00
Khải
cc7c0d22df refactor!: replace npm publish with libnpmpublish (#10591)
* chore(deps): add `libnpmpublish` to catalog

* chore(deps): install `libnpmpublish`

* feat: publishableManifest (wip)

* feat: publishableManifest (wip)

* chore(cspell): libnpmpublish

* test: fix

* feat: validate field and version

* chore: @npm/types

* chore: todo

* refactor: reorganize

* feat: transformRequiredFields

* chore(deps): patch `libnpmpublish`

* fix: `BaseManifest.config`

* fix: eslint

* chore(git): revert a patch that doesn't work

This reverts commit 45f2c6a6c2.

We will use type casting

* feat: `engines.runtime`

* feat: normalize bin

* fix: `bin === ''`

* test: fix

* refactor: inference friendly

* feat: `peerDependenciesMeta`

* refactor: group into a directory

* refactor: use `ramda.pipe`

* refactor: less intrusive type assertion

* feat!: returning `ExportedManifest`

* refactor: remove unnecessary file

* docs: add a todo

* refactor: getNetworkConfigs (#10458)

Some tests are added as a bonus

* feat: `publishPackedPkg` (wip)

* feat: replace `\t` with 4 spaces

* fix: newline

* fix: newline

* refactor: extract `FailedToPublishError`

* test: FailedToPublishError

* feat: registryConfigKeys

* feat: `publishPackedPkg` (wip)

* feat(config/getNetworkConfigs): load auth info

* feat(config/getNetworkConfigs): load auth info (#10491)

* feat: `publishPackedPkg` (wip)

* refactor: extract a `static` function

* fix: inheritance, override, and merge

* feat: `executeTokenHelper`

* fix: use the visible `globalWarn`

* feat: add options

* feat: add more options

* docs: more links

* fix: private packages

* fix: --dry-run

* feat: log more things

* fix: name

* fix: tag

* refactor: remove extraneous `assertPublicPackage`

* feat: use `publishPackedPkg` for directories

* refactor: require only necessary fields

* refactor: extractManifestFromPacked

* fix: extractManifestFromPacked

* test: extractManifestFromPacked

* feat: isTarballPath

* feat: use `publishPackedPkg` for tarballs

* style: add an empty line for clarity

* refactor: remove unnecessary works

* feat: --otp

* feat: PNPM_CONFIG_OTP

* feat: oidc

* test: fix name collision

* fix: eslint

* test: disable a false test

* feat: set `provenance`

* docs(todo): auto provenance

* refactor: run oidc in `createPublishOptions`

* fix: correct auth keys for `libnpmpublish`

* docs: changeset

* fix: incorrect `password` field

* fix: typo, grammar

* chore(git): resolve merge conflict ahead of time

In preparation for https://github.com/pnpm/pnpm/pull/10385

* fix: field name

* fix(config): decoding `_password`

* fix: edge case of partial `cert`/`key`

* fix: ensure `registry` always match its config key

* fix: `_password`

* test: correct a name

* test: more specific assertions

* fix: grammar

* docs(changeset): fix grammar

* docs: fix grammar

* fix: clean up after failure

* test: fix windows

* feat(provenance): auto detect

* refactor: consistent name

* fix: correct error names

* refactor: extract the `provenance` code

* feat: show code and body of an error

* refactor: use `encodeURIComponent`

* refactor: rename a type

* refactor: use the try-catch model

* refactor: move `normalizeBinObject`

* refactor: split `oidc` into `idToken` and `authToken`

* refactor: run `next` on `stream`'s `'end'`

* fix: use the correct encoding

* feat: guard against weird names

* test: `transform/engines`

Closes https://github.com/pnpm/pnpm/pull/10599

* test: `transformPeerDependenciesMeta`

Closes https://github.com/pnpm/pnpm/pull/10600

* refactor: dependency inject the `Date` too

* refactor: export an interface

* test: oidc

Closes https://github.com/pnpm/pnpm/pull/10598

* refactor: re-arrange imports

* refactor: remove unnecessary type casts

* refactor: improve test
2026-02-12 21:10:54 +01:00
Brandon Cheng
5bf7768ca4 feat: skip confirm modules purge prompt if --yes is passed (#10383)
* feat: add --yes command line option

* feat: skip confirm modules purge prompt if --yes is passed

* refactor: factor out `ExecPnpmSyncOpts`

* test: add end-to-end test for --yes flag
2026-02-11 02:39:23 +01:00
Ryo Matsukawa
fa5ff08473 fix(dlx): respect minimumReleaseAgeExclude (#10572)
close #10338
2026-02-11 02:32:54 +01:00
Brandon Cheng
4c6c26a7e8 fix: disable global virtual store during pnpm deploy (#10577) 2026-02-11 02:19:43 +01:00
Karl Kaiser
1fd7370639 feat(workspace filtering): add support for filtering packages since last commit under git worktree (#10542)
support managing repo in git worktree for filtering for packages changed since last commit
2026-02-11 02:05:45 +01:00
Zoltan Kochan
a49b243573 fix: list command should not fail with an OOM error (#10586)
close #8731
2026-02-11 00:38:35 +01:00
Zoltan Kochan
f2a6d0684b docs: update sponsors 2026-02-10 21:22:23 +01:00
Zoltan Kochan
cbb366a7aa fix: virtual store race condition (#10589) 2026-02-10 12:05:17 +01:00
Zoltan Kochan
861dd2a8a8 revert: fix(reviewing): fix memory error in pnpm why (#10582)
ref #7122
2026-02-09 15:05:09 +01:00
Brandon Cheng
1a5b5beea2 build: replace ts-jest with simple transformer (#10579)
* test: use `import type` in more places

Several tests are failing because a module isn't being mocked. This is
due to the mocked module being imported before the mock being set up.

Switching to `import type` should elide the import fully.

* build: replace ts-jest with simple transformer

* chore: remove `ts-jest`

* chore: remove babel dependencies from root project

* ci: use Node.js 22.13.0 (instead of 22.12.0)

Node.js 22.13.0 introduces the `stripTypeScriptTypes` function

* fix: copilot feedback
2026-02-09 11:35:22 +01:00
Zoltan Kochan
5c29d21796 chore: update pnpm-lock.yaml (#10559)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-09 01:09:10 +01:00
Zoltan Kochan
1b4df57a01 feat!: drop Node.js 20 and 21 support (#10569) 2026-02-08 19:16:24 +01:00
Zoltan Kochan
4720175176 fix: pnpm help should correctly show if pnpm is bundled with Node.js (#10563)
close #10561
2026-02-07 02:09:45 +01:00
btea
4158906724 feat: support auditLevel (#10554)
* feat: support `auditLevel`

* refactor: auditLevel

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-02-06 19:54:59 +01:00
Ryo Matsukawa
3c36e8d974 fix(audit): respect --audit-level in JSON output (#10547)
* fix(audit): respect --audit-level in JSON output

* refactor: audit

* docs: fix changeset

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-02-06 18:53:10 +01:00
Luca Casonato
9428227d7e fix: exit with signal code when inner pnpm fails (#10549)
close #10548
2026-02-06 18:38:31 +01:00
Alessio Attilio
312226cbf0 fix: skip local file: protocol dependencies during pnpm fetch (#10514)
This fixes an issue where pnpm fetch would fail in Docker builds when
local directory dependencies (file: protocol) were not available.

The fix adds an ignoreLocalPackages option that is passed from the fetch
command to skip local dependencies during graph building, since pnpm
fetch only downloads packages from the registry and doesn't need local
packages that won't be available in Docker builds.

close #10460
2026-02-06 17:28:39 +01:00
Ryo Matsukawa
4f7cbaa9c6 fix: allow pnpm run -r to work with empty pnpm-workspace.yaml (#10520)
close #10497
2026-02-06 17:13:15 +01:00
btea
f72215107a fix: remove the prefix for view version info (#10498) 2026-02-06 16:50:49 +01:00
이종혁
5f5f1db2b8 fix(plugin-commands-store): support relative storeDir in store commands (#10490)
close #10290

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-02-06 16:31:47 +01:00
Dennis Chen
559f903a90 fix: warn when directory contains PATH delimiter character (#10487)
* fix: warn when directory contains PATH delimiter character

Add a warning when the current directory contains the PATH delimiter
character (colon on macOS/Linux, semicolon on Windows). On macOS,
folder names containing forward slashes (/) appear as colons (:) at
the Unix layer. Since colons are PATH separators in POSIX systems,
this breaks PATH injection for node_modules/.bin.

close #10457

* test: add tests for PATH delimiter warning

- Test warning is emitted when directory contains delimiter
- Test no warning for normal directories
2026-02-06 16:04:19 +01:00
Zoltan Kochan
3cfffaad10 perf: save node_modules/.modules.yaml in JSON format (#10406) 2026-02-06 15:59:22 +01:00
Alessio Attilio
121f64ae99 fix: preserve reference overrides in pnpm audit --fix (#10478)
close #10325

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-02-06 14:03:08 +01:00
Zoltan Kochan
57e99b6996 chore: update pnpm-lock.yaml (#10558)
---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-06 03:28:39 +01:00
Zoltan Kochan
23f2ef96d0 ci: update-lockfile branch PR should trigger tests job
Added a github token
2026-02-06 01:02:26 +01:00
Zoltan Kochan
f3dc67280d ci: update-lockfile branch PR should trigger tests job 2026-02-06 00:45:04 +01:00
Zoltan Kochan
587e1939f5 ci: run all tests on the update-lockfile branch 2026-02-06 00:39:56 +01:00
Zoltan Kochan
89bdf4085d ci: update lockfile job 2026-02-06 00:32:21 +01:00
Trevor Burnham
680c543263 fix: allow env vars and updateConfig hook to override frozen-lockfile in CI (#10224)
When CI=true, pnpm automatically enables frozen-lockfile mode. Previously,
this could only be overridden via .npmrc files or CLI flags because the
code checked rawLocalConfig (which excludes env vars and hook changes).

Now checks the fully resolved config values (frozenLockfile and
preferFrozenLockfile) instead of rawLocalConfig, allowing:
- Environment variables (pnpm_config_frozen_lockfile=false)
- updateConfig hook in .pnpmfile.cjs
- .npmrc files (already worked)
- CLI flags (already worked)

Fixes #9861
2026-02-05 23:06:12 +01:00
Johan Quan Vo
12d58cce5f fix(deps): add override for @isaacs/brace-expansion@5.0.1 (#10545)
* fix(deps): add override for @isaacs/brace-expansion@5.0.1

https://github.com/advisories/GHSA-7h2j-956f-4vf2

* revert: not needed override
2026-02-05 23:00:53 +01:00
Ryo Matsukawa
3ed41f4811 fix: shamefullyHoist set via updateConfig in .pnpmfile.cjs (#10519)
* fix: `shamefullyHoist` set via `updateConfig` in `.pnpmfile.cjs`

* refactor: consolidate derived config processing to cli-utils

Move shamefullyHoist → publicHoistPattern conversion from
config/config to cli-utils/getConfig.ts as suggested in review.

* test(config): update tests for derived config processing move

* refactor: move applyDerivedConfig to cli-utils

* refactor: move applyDerivedConfig to cli-utils

* test: use unit test for hoist: false in cli-utils

* revert: not needed changes

close #10271
2026-02-05 22:45:20 +01:00
Lucas Gomes Santana
47e850180a fix(deps): update tar version to 7.5.7 to fix security vulnerability (pnpm#10530) (#10539)
close #10530
2026-02-03 01:47:37 +01:00
Diogo Correia
780af09808 fix(worker): inconsistent store structure due to race condition (#10536)
close #10535
2026-01-31 01:49:35 +01:00
Chanakya Sinde
8e2a66ece8 docs: fix grammar and use HTTPS links in Code of Conduct (#10523) 2026-01-27 23:34:45 +01:00
btea
e119c4ede6 feat: support check more invalid workspace file (#10319)
close #10313

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-01-27 17:28:14 +01:00
Johan Quan Vo
7b1c189f2e feat!: remove deprecated patch options (#10505)
* refactor: remove allowNonAppliedPatches

* refactor: remove ignorePatchFailures

* refactor: remove `strict` field in groupPatchedDependencies

* test: update test failure in package patching

* test: fix

* docs: update changesets

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-01-27 17:08:45 +01:00
Ryo Matsukawa
f8b4895e0a fix(list): correct dependency paths with global virtual store (#10375)
* fix(list): correct dependency paths with global virtual store

* fix: global virtual store path

* fix: test

* fix: symlink resolution should only apply to top-level dependencies

* fix: resolve subdependency paths with global virtual store

* fix(list): resolve correct paths with global virtual store

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-01-27 16:25:58 +01:00
Alessio Attilio
94571fb2fe fix: prevent catalog: from leaking into pnpm-workspace.yaml (#10476)
close #10176
2026-01-27 15:52:31 +01:00
Maikel van Dort
f3cd9f7c05 feat: dlx timeout & retry (#10512) 2026-01-27 01:37:26 +01:00
Brandon Cheng
9a17bd74b0 fix: check updateSpec correctly when updating catalog snapshots (#10513) 2026-01-26 15:07:34 +01:00
dependabot[bot]
cda7187dbd chore(deps): bump the github-actions group across 1 directory with 5 updates (#10518)
Bumps the github-actions group with 5 updates in the / directory:

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-26 15:06:30 +01:00
Maikel van Dort
c50357f1b8 docs: add codeblock highlight (#10510) 2026-01-26 15:04:22 +01:00
Yeom
4f66fbe6fa fix(workspace.manifest-writer): preserve formatting in pnpm-workspace.yaml when updating catalogs (#10430)
* fix(workspace.manifest-writer): preserve yaml formatting in pnpm-workspace.yaml

Ensure that the original formatting (quotes, etc.) in pnpm-workspace.yaml
is preserved when running commands like \`pnpm update\`.

Close #10425

* docs: add changeset

* fix(workspace/manifest-writer): restore formats

* test: manifest writer preservers quotes in catalogs

* fix(workspace.manifest-writer): only update catalog when values change

* fix: remove redundant code

* test: adding catalog

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-01-26 07:07:28 +01:00
Maikel van Dort
8eee41691c feat: add support for catalogs with dlx (#10434)
* feat: add support for catalogs with dlx

* fix: feedback

* Update .changeset/curly-dryers-jam.md

Co-authored-by: Brandon Cheng <gluxon@users.noreply.github.com>

* Update .changeset/curly-dryers-jam.md

Close #10249

Co-authored-by: Brandon Cheng <gluxon@users.noreply.github.com>

---------

Co-authored-by: Brandon Cheng <gluxon@users.noreply.github.com>
2026-01-26 07:06:36 +01:00
Shunta Takemoto
0625e20442 feat: treat bare workspace: protocol as workspace:* (#10436)
* feat: treat bare `workspace:` protocol as `workspace:*`

* chore: add chageset

* test(exportable-manifest): add test for `workspace` with explicit versions

* test: add tests and update changesets

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-01-26 07:06:01 +01:00
Brandon Cheng
af7a7efe00 chore: upgrade node-gyp to 11.5.0 (#10509) 2026-01-26 02:18:38 +01:00
Trevor Burnham
0ecff5b85c fix(completion): correct documentation URL in help output (#10511)
The completion command's help text was showing a URL that redirects to a 404 page
(https://pnpm.io/10.x/cli/completion\). This changes it to the correct URL
(https://pnpm.io/completion\) where the documentation actually exists.

close #10281
2026-01-26 01:30:08 +01:00