Commit Graph

159 Commits

Author SHA1 Message Date
Zoltan Kochan
78951f2adb fix: global bin shim invokes pnpm instead of Node when installed via @pnpm/exe (#11335)
* fix(installation): skip pnpm exe when no Node.js is on PATH

When pnpm is installed as @pnpm/exe (a Single Executable Application
that bundles Node.js into the pnpm binary) and the user has no separate
Node.js on PATH, `which('node')` fails and `getNodeExecPath` used to
fall back to `process.execPath` - which in @pnpm/exe is the pnpm binary
itself, not a Node binary. That path got baked into generated global
bin shims via nodeExecPath, so running any globally-installed CLI
invoked pnpm with the target script as its first positional arg,
producing `ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND` from the current
working directory.

Detect the @pnpm/exe case via `detectIfCurrentPkgIsExecutable` and
return undefined from the fallback so the shim emits a plain
`exec node <target>` instead.

Closes #11291
Refs #4645

* Update pkg-manager/plugin-commands-installation/src/nodeExecPath.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-22 14:41:12 +02:00
Zoltan Kochan
28204a4c9a feat: add dedupePeers option to reduce peer dependency duplication (#11079)
When enabled, peer dependency suffixes use version-only identifiers
(name@version) instead of full dep paths, eliminating nested suffixes
like (foo@1.0.0(bar@2.0.0)). Transitive peers are still tracked but
identified by version instead of full dep path.

Backport of #11071 to v10.

Closes #11070
2026-03-24 13:51:52 +01:00
Ryo Matsukawa
add108086a fix: dynamically calculate column widths in interactive update table (#10585)
* fix: dynamically calculate column widths in interactive update table

* test: implement copilot suggestions

* style: change order of functions

close #10316
2026-03-07 23:02:51 +01:00
Trevor Burnham
68999664a3 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-03-07 23:02:51 +01:00
Brandon Cheng
4794c61dd1 fix: disable global virtual store during pnpm deploy (#10577) 2026-02-11 02:20:56 +01:00
Alessio Attilio
7adf26b017 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 20:21:04 +01:00
btea
3f2c5f4d39 feat: add trustPolicyIgnoreAfter (#10359)
* feat: add `trustPolicyIgnoreAfter`

* Update .changeset/big-lies-pump.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: npm-resolver

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-12-28 02:03:56 +01:00
Zoltan Kochan
9b05bdd7e1 fix: reporting ignored dependency builds (#10276) 2025-12-06 16:43:42 +01:00
Ryo Matsukawa
93d49548ca feat: add support for trustPolicyExclude (#10168)
close #10164
2025-11-11 13:01:56 +01:00
Ryo Matsukawa
68ad0868b4 feat: add support for npm package trust evidence check via a new trustPolicy setting (#10103)
close #8889

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-11-09 23:32:56 +01:00
Trevor Burnham
17344ca27f fix(update): prevent package.json updates when updating indirect dependencies (#5118) (#10155)
close #5118
2025-11-06 15:14:36 +01:00
btea
93fdc73626 fix: correctly apply cleanupUnusedCatalogs when remove pkg (#10005)
close #9993

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-09-28 00:55:43 +02:00
btea
c182b2d588 fix: remove pkg apply cleanupUnusedCatalogs (#9930)
* fix: remove pkg apply cleanupUnusedCatalogs

* fix: lint
2025-09-07 00:03:56 +02:00
Zoltan Kochan
facd7656e8 refactor: always use extensions in relative imports (#9878) 2025-08-19 15:25:11 +02:00
btea
8747b4e7f6 feat: add cleanupUnusedCatalogs config (#9793) 2025-08-14 12:26:51 +02:00
btea
9dbada8315 refactor: combine addCatalogs to updateWorkspaceManifest (#9850) 2025-08-13 17:32:43 +02:00
Khải
6f7ac0f48b feat: customize supportedArchitectures using CLI (#9745)
close #7510
2025-07-16 00:56:00 +02:00
Zoltan Kochan
cf630a8e84 feat: allow to set multiple pnpmfiles (#9702) 2025-07-08 14:54:07 +02:00
Zoltan Kochan
b511eac107 fix: running an install after the fetch command should hoist all dependencies (#9690)
close #9689
2025-06-25 01:14:45 +02:00
Khải
1ccd634f56 refactor: stricter type for mutation (#9680) 2025-06-21 23:00:18 +02:00
Nikita Skovoroda
45580ad93d fix: 15% smaller bundle size (#8810) 2025-06-13 22:04:48 +02:00
Khải
983efdc7f1 fix(deploy): overrides contain peer dependencies (#9604)
close #9595
2025-06-10 00:45:55 +02:00
Zoltan Kochan
b217bbb4a7 feat: add a new setting for telling pnpm if the env is CI (#9616)
This is an addition to https://github.com/pnpm/pnpm/pull/8190. The global virtual store isn't a good choice for CI. So, we disable it even if the setting sets `enableGlobalVirtualStore` to `true`.
2025-06-08 15:00:22 +02:00
Brandon Cheng
099ac93e08 refactor: use Catalogs config type instead of CatalogSnapshots for updatedCatalogs (#9589)
* refactor: use Catalogs config type instead of CatalogSnapshots

* refactor: create catalogMetadata instead of manually patching snapshots
2025-06-01 23:53:04 +02:00
martinkors
046af72a96 feat: add new catalogMode setting (#9552)
* feat: add new `catalogMode` setting

Add new `catalogMode` setting for automatically adding new dependencies to
the default catalog.

Closes pnpm#8876, Closes pnpm#8308

* fix: catalogs don't only store semver ranges and versions

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-05-20 16:47:05 +02:00
Brandon Cheng
e7d0f6cdcf refactor: rename newCatalogs to updatedCatalogs (#9561) 2025-05-20 11:15:41 +02:00
Khải
c8341cca57 feat: pnpm add option to add new entries to catalogs (#9484)
close #9425

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-05-14 18:32:05 +02:00
modten
36d1448c48 feat: add workspace-concurrency cli option for pack and publish command (#9493)
* refactor: set the default `workspaceConcurrency` to `Math.min(os.availableParallelism(), 4)`

* feat(plugin-commands-publishing): add `workspace-concurrency` cli option for pack and publish

* feat(recursive): add support for `recursive pack`

* feat: get default workspaceConcurrency from config package

* test(config): mock cpus to support Node.js 18
2025-05-09 10:30:21 +02:00
Zoltan Kochan
9362b5fb15 fix: updateConfig in pnpm-workspace.yaml should not be ignored (#9501)
* fix: updateConfig in pnpm-workspace.yaml should not be ignored

close #9500

* fix: reading executionEnv from pnpm-workspace.yaml
2025-05-08 12:24:43 +02:00
btea
62029d1794 fix: add command --allow-build option should specify package (#9489)
* fix: add command --allow-build option should specify package

* chore: remove warn

* fix: validating the --allow-build flag

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-05-07 18:18:39 +02:00
Khải
3f70b673bf refactor: add type to action (#9490)
* refactor: add type to `action`

* fix: eslint
2025-05-05 13:46:19 +02:00
Zoltan Kochan
8a9f3a4835 refactor: rename pref to bare specifier (#9445) 2025-04-20 22:58:08 +02:00
Zoltan Kochan
56bb69b004 feat: dangerouslyAllowAllBuilds allows to enable the build of all dependencies (#9440)
close #9102
2025-04-20 13:13:11 +02:00
Zoltan Kochan
5b73df1eb1 refactor: resolvers should calculate the specifiers that are saved into package.json (#9426)
* refactor: resolvers should return specifier templates

* refactor: updating workspace protocol specs in package.json

* refactor: move workspace selector calculation logic to npm-resolver

* refactor: move workspace selector calculation logic to npm-resolver

* refactor: calculating range in npm-resolver

* refactor: rename normalizedPref and specifierTemplate to specifier

* refactor: specifiers creation

* refactor: npm-resolver

* refactor: remove which-version-is-pinned package

* refactor: which version is pinned

* docs: add changesets

* refactor: implement suggestions

* refactor: revert regex usage
2025-04-18 17:48:03 +02:00
btea
4d95e93040 fix: write allow-build value to pnpm-workspace.yaml (#9404) 2025-04-14 11:43:03 +02:00
Zoltan Kochan
750ae7d1d7 feat(cli): installing new configurational dependencies (#9377) 2025-04-07 13:38:18 +02:00
Zoltan Kochan
80338543fb fix: pnpm link should update overrides in pnpm-workspace.yaml (#9365) 2025-04-03 01:12:31 +02:00
Zoltan Kochan
1413c25435 feat: config update hook (#9325) 2025-03-31 08:08:32 +02:00
Zoltan Kochan
c1f09d48fa fix: dlx with --allow-build flag (#9281)
close #9263
2025-03-14 02:27:58 +01:00
Brandon Cheng
b4efd0eca8 refactor: always load all projects into allProjectsGraph (#9259) 2025-03-11 02:59:23 +01:00
Brandon Cheng
cda1c43dad refactor: prune lockfile importers when running pnpm deploy to prepare for allProjectsGraph refactor (#9258)
* feat: support `pruneLockfileImporters` as argument to install

* fix: remove unnecessary importers from filtered lockfile during deploy
2025-03-11 02:52:32 +01:00
btea
d9d7607cc1 fix: update choice list not show deprecated pkg (#9214)
---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-03-06 02:34:23 +01:00
Zoltan Kochan
d965748ff4 feat: setting config settings via pnpm-workspace.yaml (#9211)
Related discussion: https://github.com/orgs/pnpm/discussions/9037
2025-03-04 15:09:13 +01:00
btea
adb236f1a1 refactor: improve regexp (#9203) 2025-03-02 13:17:09 +01:00
Brandon Cheng
e4eeafdb55 fix: catalog snapshots removed on filtered install with dedupe-peer-dependents=false (#9175)
* test: add catalog test for --filter and dedupe-peer-dependents=false

* fix: disable dedupe-injected-deps when deploying

* fix: catalog snapshots removed with dedupe-peer-dependents=false
2025-03-02 12:42:46 +01:00
Zoltan Kochan
6a59366248 fix: self-update should not read pnpm settings from current package.json (#9196)
close #9188
close #9183
2025-03-01 13:49:56 +01:00
R.P. Pedraza
76973d8c81 feat(link): normalize generated link paths in package.json (#9163) 2025-02-26 02:56:59 +01:00
R.P. Pedraza
529696182f fix: reference root manifest directory instead of the dependent dir (#9132)
* fix: reference root manifest directory instead of the dependent dir

This fixes https://github.com/pnpm/pnpm/issues/9066.

* refactor: link test

* docs: add changeset

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-02-25 02:15:38 +01:00
Zoltan Kochan
8fcc221394 feat: reading settings from pnpm-workspace.yaml (#9121)
Related discussion: https://github.com/orgs/pnpm/discussions/9037

close #9033
2025-02-22 02:10:43 +01:00
btea
546ab377de fix: --allow-build=<pkg> overlaps with ignoredBuiltDependencies (#9105)
* fix: `--allow-build=<pkg>` overlaps with `ignoredBuiltDependencies`

* feat: update

* fix: update

* test: update

* fix: add hint to the error message

* test: fix

* docs: update changeset

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-02-16 22:07:52 +01:00