Zoltan Kochan
fd511e4676
feat: isolated global packages ( #10697 )
...
**TLDR:** Global packages in pnpm v10 are annoying and slow because they all are installed to a single global package. Instead, we will now use a system that is similar to the one used by "pnpm dlx" (aka "pnpx").
Each globally installed package (or group of packages installed together) now gets its own isolated installation directory with its own `package.json`, `node_modules`, and lockfile. This prevents global packages from interfering with each other through peer dependency conflicts or version resolution shifts.
## Changes
- Add `@pnpm/global-packages` shared utilities package for scanning, hashing, and managing isolated global installs
- `pnpm add -g` creates isolated installs in `{pnpmHomeDir}/global/v11/{hash}/`
- `pnpm remove -g` removes the entire installation group containing the package
- `pnpm update -g` re-installs into new isolated directories and swaps symlinks
- `pnpm list -g` scans isolated directories to show installed global packages
- `pnpm outdated -g` checks each isolated installation for outdated dependencies
- `pnpm store prune` cleans up orphaned global installation directories
## Breaking changes
- `pnpm install -g` (no args) is no longer supported — use `pnpm add -g <pkg>`
- `pnpm link <pkg-name>` no longer resolves packages from the global store — only relative or absolute paths are accepted
- `pnpm link --global` is removed — use `pnpm add -g .` to register a local package's bins globally
2026-03-01 15:49:18 +01:00
Zoltan Kochan
e18a879d72
feat!: drop Node.js 22.12 support
2026-02-18 14:54:09 +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
Zoltan Kochan
1b4df57a01
feat!: drop Node.js 20 and 21 support ( #10569 )
2026-02-08 19:16:24 +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
Zoltan Kochan
3c40892b90
feat!: remove old way of declaring node.js in dependencies ( #10507 )
2026-01-25 16:07:30 +01:00
Lindsay Glenn
cee1f58d3a
fix(manifest-utils): normalize peer specs for protocol deps ( #10442 )
...
close #10417
2026-01-17 14:44:51 +01:00
Zoltan Kochan
a00f9e515c
chore: use typescript-go ( #10452 )
2026-01-14 01:18:13 +01:00
Brandon Cheng
db72923b5c
fix: forward $NODE_OPTIONS when running jest for debug terminals ( #10364 )
...
* fix: forward existing `$NODE_OPTIONS` when running jest
* chore: update `package.json` files for meta-updater changes
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2025-12-27 22:10:52 +01:00
Dasa Paddock
29764fb140
feat(hooks): add beforePacking hook ( #10303 )
...
* feat(hooks): add `readPackageForPublishing` hook
* feat: pass project `dir` parameter to `readPackageForPublishing` hook
* chore: cleanup
* fix: add support for multiple pnpmfiles
* test: readPackageForPublishing hook
* test: add more tests
* test: small update
* refactor: pass in `hooks` as an option
* test: pass in `hooks` as an option
* test: small update
* chore: rename `readPackageForPublishing` to `beforePacking`
2025-12-21 15:49:47 +01:00
Matt Kantor
df1af144aa
docs: fix usage example in @pnpm/read-package-json README ( #10219 )
...
This module has no default export.
2025-11-22 02:29:10 +01:00
Zoltan Kochan
98a5f1ce33
fix: node runtime is not moved to dependencies on pnpm add ( #10210 )
...
close #10209
2025-11-20 02:35:46 +01:00
Zoltan Kochan
7e2910e70f
chore(release): 11.0.0-alpha.0
2025-11-13 15:44:27 +01:00
Zoltan Kochan
f03b9ecf4e
feat: support engines in publishConfig ( #10169 )
2025-11-11 01:18:23 +01:00
Zoltan Kochan
efb48dcab5
feat: install js runtime as prod dependency ( #10141 )
2025-10-31 17:12:50 +01:00
Zoltan Kochan
dab9abef5c
Merge remote-tracking branch 'origin/main' into v11
2025-10-24 14:19:07 +02:00
Zoltan Kochan
0cde1287c8
chore: update repository fields
2025-10-23 11:57:12 +02:00
Zoltan Kochan
43d7b18c2f
chore(release): 10.19.0
2025-10-21 15:30:20 +02:00
Zoltan Kochan
a43166624e
Merge remote-tracking branch 'origin/main' into v11
2025-10-10 10:01:19 +02:00
Zoltan Kochan
6618431aee
chore(release): libs
2025-09-29 11:56:00 +02:00
Zoltan Kochan
cb0c5b94c6
Merge remote-tracking branch 'origin/main' into v11
2025-09-19 14:31:36 +02:00
Zoltan Kochan
ea44ff979f
chore(release): 10.16.1
2025-09-13 19:20:27 +02:00
Zoltan Kochan
6f861bccaa
Merge remote-tracking branch 'origin/main' into v11
2025-09-12 22:35:14 +02:00
Zoltan Kochan
a3c1498403
chore(release): 10.16.0
2025-09-12 14:24:30 +02:00
Zoltan Kochan
e792927841
feat: support finder functions for performing complex searches with list and why commands ( #9946 )
2025-09-12 11:46:32 +02:00
Zoltan Kochan
d12ff1c3c0
fix: update dependencies
2025-08-28 21:27:40 +02:00
Zoltan Kochan
a594932312
fix: update dependencies
2025-08-28 20:01:31 +02:00
Zoltan Kochan
cf9f14aa9e
fix: update tempy
2025-08-28 14:00:51 +02:00
Zoltan Kochan
3df6702bcb
fix: update load-json-file, write-json-file, write-pkg
2025-08-28 11:37:38 +02:00
Zoltan Kochan
491a84fb26
feat: use ESM instead of commonjs ( #9870 )
2025-08-25 10:02:00 +02:00
Zoltan Kochan
27cbc09206
style: fix jest-related linting issues ( #9894 )
2025-08-22 21:56:49 +02:00
Zoltan Kochan
51bc234712
Merge branch 'main' into v11
2025-08-19 15:29:18 +02:00
Zoltan Kochan
facd7656e8
refactor: always use extensions in relative imports ( #9878 )
2025-08-19 15:25:11 +02:00
Zoltan Kochan
7d2fd48215
feat!: drop Node.js 18 support ( #9858 )
2025-08-14 14:06:03 +02:00
Zoltan Kochan
a4d654807c
chore(release): 10.14.0
2025-07-31 15:00:26 +02:00
Zoltan Kochan
86b33e91ea
feat: support installing Bun runtime ( #9815 )
...
* feat: support installing Bun runtime
* feat: support installing Bun runtime
* fix: cache libc resolution
* refactor: shasum file fetching
* docs: add changesets
* feat: installing the right artifact
* test: supported architectures
* test: fix on Windows
2025-07-31 13:46:13 +02:00
Zoltan Kochan
d1edf732ad
feat: support installing Deno runtime ( #9791 )
...
* feat: support installing Deno runtime
* refactor: use npm registry to resolve deno version
* feat: wip
* feat: installing deno runtime
* style: fix
* test: fix
* test: deno
* test: fix
* feat: deno
* feat: deno
* feat: create zip fetcher
* style: fix
* refactor: node fetch
* feat: support a new binary fetcher
* test: fix
* feat: rename zip-fetcher to binary-fetcher
* refactor: change naming
* fix: windows
* refactor: rename packages
* refactor: deno resolver
* refactor: runtime resolvers
* refactor: binary fetcher
* refactor: runtime resolvers
* refactor: runtime resolvers
* refactor: create SingleResolution
* refactor: remove not needed change
* refactor: package requester
* docs: add changesets
* refactor: use VariationsResolution and AtomicResolution
* refactor: implement CR suggestions
* docs: add changesets
* fix: address comment in CR
* feat: update formatting of pnpm-lock.yaml
2025-07-30 11:27:07 +02:00
Zoltan Kochan
fb9de7ac3a
chore(release): 10.14.0-0
2025-07-23 14:54:13 +02:00
Zoltan Kochan
14395be3cd
feat(add): update devEngines.runtime with a Node.js entry ( #9774 )
2025-07-21 13:09:00 +02:00
btea
4a8243a00d
chore: package.json add type field ( #9765 )
...
* chore: `package.json` add type field
* chore: add type field to every package.json
* chore: add type field to every package.json
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2025-07-20 03:21:46 +02:00
Zoltan Kochan
1a07b8fc7c
feat: install Node.js runtime as a dependency ( #9755 )
2025-07-19 15:11:40 +02:00
Zoltan Kochan
4da0fe3080
test(read-project-manifest): use @pnpm/test-fixtures
2025-07-19 14:00:57 +02:00
Khải
0e596f60b8
refactor: use Object.hasOwn ( #9674 )
2025-06-20 17:49:28 +02:00
Khải
a90dffc19d
test: less verbose variable names ( #9543 )
2025-05-16 12:01:55 +02:00
Zoltan Kochan
789e7235ce
chore(release): 10.11.0
2025-05-13 16:01:19 +02:00
Zoltan Kochan
a4ba06ddc9
chore(release): 10.9.0
2025-04-21 10:13:38 +02:00
Zoltan Kochan
8a9f3a4835
refactor: rename pref to bare specifier ( #9445 )
2025-04-20 22:58:08 +02:00
Khải
9c3dd03710
feat: add support for the jsr: protocol ( #9358 )
...
close #8941
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2025-04-20 11:51:51 +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
Zoltan Kochan
6574546eee
chore(release): 10.8.0
2025-04-07 18:21:12 +02:00