pnpm 12.0.0-rc.7 → 12.0.0-rc.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +250 -0
- package/README.md +12 -0
- package/dist/node_modules/.pnpm-workspace-state-v1.json +8 -22
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,255 @@
|
|
|
1
1
|
# pnpm
|
|
2
2
|
|
|
3
|
+
## 12.0.0-rc.9
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- A project's `pnpm-workspace.yaml` may no longer carry a setting pnpm does not recognize. Such a setting used to be ignored in silence — a misspelled `minimumReleaseAge` dropped the policy it was meant to set, and nothing said so. Now it is reported, suggesting the closest real setting name when the key looks like a typo, and it fails the command with `ERR_PNPM_UNRECOGNIZED_WORKSPACE_SETTINGS` when the project pins a pnpm version the running pnpm satisfies: with the pin honored, the setting cannot be meant for a different pnpm version, so it is a mistake to fix rather than a key to ignore. Everywhere else it is a warning, so a project that has yet to be cleaned up keeps working.
|
|
8
|
+
|
|
9
|
+
The `pnpm config` subcommands never fail on such a setting, so a broken file can still be inspected and repaired, and `pnpm config get <key>` prints the value with no warnings at all. Keys the global config file cannot set are likewise split between workspace-only settings (still directed to `pnpm-workspace.yaml`) and settings unknown to this version.
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- Added global build approvals [pnpm/pnpm#14101](https://github.com/pnpm/pnpm/issues/14101).
|
|
14
|
+
|
|
15
|
+
- Added recursive global outdated checks [pnpm/pnpm#14101](https://github.com/pnpm/pnpm/issues/14101).
|
|
16
|
+
|
|
17
|
+
- `pnpm config get` and `pnpm config list` now show the settings pnpm acts on under their documented names:
|
|
18
|
+
|
|
19
|
+
- `registries` shows the registries pnpm resolves from, merged across every source (`.npmrc`, `pnpm-workspace.yaml`, the global config, CLI flags), in the shape the setting is written in: keyed by registry URL, with the default registry declared as the bare `@` scope. Built-in routes are included — the `@jsr` scope and the `npmjs` and `gh` prefixes — unless pointed elsewhere. Previously `pnpm config get registries` printed `undefined`.
|
|
20
|
+
- `update` and `audit` show the effective sections, whichever spelling set them. The deprecated internal spellings (`updateConfig`, `auditConfig`, `auditLevel`) are no longer listed.
|
|
21
|
+
- `catalogs` shows the complete resolved catalog set — the singular `catalog` block is its `default` entry — whichever spelling declared it.
|
|
22
|
+
- The `registry` and `@scope:registry` entries show the merged routes rather than raw `.npmrc` values, so they always agree with the `registries` view.
|
|
23
|
+
|
|
24
|
+
- Added support for configuring `stateDir` in the Rust pnpm CLI [pnpm/pnpm#12042](https://github.com/pnpm/pnpm/issues/12042).
|
|
25
|
+
|
|
26
|
+
- Added bounded workspace concurrency for recursive run and exec commands [pnpm/pnpm#14101](https://github.com/pnpm/pnpm/issues/14101).
|
|
27
|
+
|
|
28
|
+
- `@pnpm/napi` gained reporter output, reverse dependency queries, and lockfile access.
|
|
29
|
+
|
|
30
|
+
`install` and `rebuild` accept `options.reporter` and render pnpm's terminal output — progress line, packages-diff summary, lifecycle output, and the `Done in …` footer. Rendered output goes to stdout, or to an `onOutput` callback for a host that writes its own output through JavaScript. New reporting options: `hideLifecycleOutput`, `ignoredBuildsInstructionText`, and `hideLinkedPkgsDiff`.
|
|
31
|
+
|
|
32
|
+
`getDependents` returns the reverse dependency trees behind `pnpm why`, annotated with the `package.json` fields named in `manifestFields`. `renderDependents` returns those trees rendered as tree, parseable, or JSON output.
|
|
33
|
+
|
|
34
|
+
`readLockfile` and `writeLockfile` read and write `pnpm-lock.yaml` (or the current lockfile under the virtual store). `filterLockfileByImporters` returns a lockfile narrowed to what the named importers reach. `readModulesManifest` returns the `.modules.yaml` state of an installed `node_modules`.
|
|
35
|
+
|
|
36
|
+
Top-level lockfile keys pnpm does not define are no longer dropped when a lockfile is loaded and saved, so state a tool records beside pnpm's own keys survives a rewrite.
|
|
37
|
+
|
|
38
|
+
- `pnpm` now supports per-branch lockfiles in its Rust engine:
|
|
39
|
+
|
|
40
|
+
- `gitBranchLockfile` gives each git branch its own `pnpm-lock.<branch>.yaml`, so two branches can hold different resolutions without conflicting on one file. A branch that has no lockfile yet installs against the shared `pnpm-lock.yaml`.
|
|
41
|
+
- `mergeGitBranchLockfiles` (and the `--merge-git-branch-lockfiles` flag on `pnpm install`) folds every branch lockfile back into `pnpm-lock.yaml` and deletes them, which is what merging a branch into the mainline needs.
|
|
42
|
+
- `mergeGitBranchLockfilesBranchPattern` (and `--merge-git-branch-lockfiles-branch-pattern`) names the branches that merge automatically, so a mainline branch does not have to pass the flag by hand [#12042](https://github.com/pnpm/pnpm/issues/12042).
|
|
43
|
+
|
|
44
|
+
- Added `PNPM_CONFIG_VIRTUAL_STORE_ONLY` and `PNPM_CONFIG_ENABLE_MODULES_DIR` support to the Rust pnpm CLI.
|
|
45
|
+
|
|
46
|
+
- Added support for the `lockfileDir` setting and its `--lockfile-dir <dir>` flag on `pnpm install`, `add`, `update`, and `remove`. `pnpm-lock.yaml`, the root `node_modules` holding the virtual store, and the config dependencies now live in the given directory, each project is recorded under its path relative to it, and every project keeps its own `node_modules` of symlinks — so several projects can share one lockfile [#12042](https://github.com/pnpm/pnpm/issues/12042).
|
|
47
|
+
|
|
48
|
+
- Added support for the `preferSymlinkedExecutables` setting. On POSIX systems, `node_modules/.bin` entries are created as symlinks to the executable files instead of shell shims, and `NODE_PATH` pointing at the virtual store of the workspace root is exported to spawned scripts so they can resolve dependencies from the hoisted store. Like the TypeScript CLI, the setting turns on automatically when `nodeLinker` is set to `hoisted`.
|
|
49
|
+
|
|
50
|
+
- Added the six CLI flags the TypeScript pnpm CLI accepts but the Rust CLI did not [#14101](https://github.com/pnpm/pnpm/issues/14101):
|
|
51
|
+
|
|
52
|
+
- `--stream` prints a recursive command's script output as it arrives, one line at a time, prefixed with the project it came from, instead of letting the scripts write to the terminal directly. `--parallel` implies it, as in pnpm.
|
|
53
|
+
- `--aggregate-output` holds each script's streamed output until the script exits and then prints it as one block, so concurrent projects can't interleave.
|
|
54
|
+
- `--reporter-hide-prefix` drops that project prefix from the scripts' own output lines. On a recursive `pnpm exec`, the opposite spelling `--no-reporter-hide-prefix` turns the prefixing on.
|
|
55
|
+
- `--use-stderr` sends the reporter's output to stderr, leaving stdout for the command's own result.
|
|
56
|
+
- `--ignore-workspace` runs the command as if the project were standalone: no workspace root is discovered, so `pnpm-workspace.yaml` contributes neither settings nor sibling projects, and a blocked dependency build is not scaffolded into its `allowBuilds`.
|
|
57
|
+
- `--workspace-packages` overrides the `packages` patterns of `pnpm-workspace.yaml` for the run.
|
|
58
|
+
|
|
59
|
+
The `stream`, `aggregateOutput`, `reporterHidePrefix`, `useStderr`, and `ignoreWorkspace` settings are now read from `pnpm-workspace.yaml`, the global `config.yaml`, and their `PNPM_CONFIG_*` environment variables too.
|
|
60
|
+
|
|
61
|
+
- Added support for the `shellEmulator` setting. With it enabled, the scripts `pnpm run` executes, a project's own lifecycle scripts, and dependencies' build scripts run in a built-in POSIX shell instead of the platform's (`sh -c`, or `cmd /d /s /c` on Windows), so scripts written for `sh` behave the same on every OS. `scriptShell` is not used while the emulator is on.
|
|
62
|
+
|
|
63
|
+
- The Rust engine now checks that a package read back from the store is the package it was recorded as. When the tarball's `package.json` names a different name or version than the store entry was keyed for — a broken lockfile, or a registry serving content that doesn't match its metadata — the install fails with `ERR_PNPM_UNEXPECTED_PKG_CONTENT_IN_STORE`. Set the new `strictStorePkgContentCheck` setting to `false` to downgrade the failure to a warning and install from the entry anyway [#12042](https://github.com/pnpm/pnpm/issues/12042).
|
|
64
|
+
|
|
65
|
+
- `pnpm` now supports three workspace settings in its Rust engine:
|
|
66
|
+
|
|
67
|
+
- `includeWorkspaceRoot` (and the universal `--include-workspace-root` / `--no-include-workspace-root` flags) keeps the workspace root project in a recursive `run`, `exec`, `add`, or `test`, which otherwise leave it out.
|
|
68
|
+
- `ignoreWorkspaceCycles` and `disallowWorkspaceCycles` control the report an install makes when workspace projects depend on each other in a cycle: it is a warning by default, an `ERR_PNPM_DISALLOW_WORKSPACE_CYCLES` error under `disallowWorkspaceCycles`, and silent under `ignoreWorkspaceCycles` [#12042](https://github.com/pnpm/pnpm/issues/12042).
|
|
69
|
+
|
|
70
|
+
- Added support for the remaining pnpm default settings, including recursive command controls, optional dependency selection, workspace-root checks, color modes, lockfile compatibility, and pack manifest options.
|
|
71
|
+
|
|
72
|
+
- Batch workspace publishing accepts a shared scope-specific credential, rejects mismatched credentials for a registry before publishing, and runs the `publish` and `postpublish` scripts after each completed registry group [pnpm/pnpm#14101](https://github.com/pnpm/pnpm/issues/14101).
|
|
73
|
+
|
|
74
|
+
- Added the commands the Rust CLI was still missing:
|
|
75
|
+
|
|
76
|
+
- `pnpm get <key>` and `pnpm set <key> <value>` — the top-level spellings of `pnpm config get` and `pnpm config set`.
|
|
77
|
+
- `pnpm store status` — reports the packages whose files no longer match the store they were expanded from, failing with `ERR_PNPM_MODIFIED_DEPENDENCY`; and `pnpm store add <pkg>...` — fetches packages into the store without writing a manifest, a lockfile, or `node_modules`.
|
|
78
|
+
- `pnpm env use --global <version>` and `pnpm env list [<selector>]`, the deprecated Node.js-only front end to `pnpm runtime`.
|
|
79
|
+
- `pnpm edit`, `pnpm profile`, `pnpm token`, and `pnpm xmas` now fail with `ERR_PNPM_NOT_IMPLEMENTED` pointing at the npm CLI, instead of being taken for a package script.
|
|
80
|
+
|
|
81
|
+
- An install that resolves the dependency graph now reports the unmet peer dependencies it leaves behind, matching the TypeScript CLI. By default it warns once — `Issues with peer dependencies found. Run "pnpm peers check" to list them.` — and with `strictPeerDependencies` it fails with `ERR_PNPM_PEER_DEP_ISSUES` after the artifacts are written, listing every unmet peer. This covers `pnpm install`, `add`, `remove`, `update` and `--lockfile-only`; `pnpm dedupe` reported the same verdict already, and now shares the reporting with them. `peerDependencyRules` are applied before the verdict, so a rule that covers every issue leaves nothing to report, and a `--filter`ed install reports only on the projects it installed. An install that skips resolution — a frozen install, or one whose `pnpm-lock.yaml` is already up to date — reports nothing, as in the TypeScript CLI; `pnpm peers check` inspects such a tree [#14098](https://github.com/pnpm/pnpm/issues/14098).
|
|
82
|
+
|
|
83
|
+
- Added `fetchWarnTimeoutMs` and `fetchMinSpeedKiBps` to the Rust pnpm CLI and its N-API bindings. Slow registry metadata requests and tarball downloads now emit pnpm-compatible warnings without exposing URL credentials, query parameters, fragments, or control characters [pnpm/pnpm#12042](https://github.com/pnpm/pnpm/issues/12042).
|
|
84
|
+
|
|
85
|
+
- Added filtered and split SBOM generation with per-project lockfiles, including reachable workspace projects and incomplete-graph validation [pnpm/pnpm#14101](https://github.com/pnpm/pnpm/issues/14101).
|
|
86
|
+
|
|
87
|
+
### Patch Changes
|
|
88
|
+
|
|
89
|
+
- Kept pending build approvals available after removing an unrelated dependency.
|
|
90
|
+
|
|
91
|
+
- Fixed resolving the `chcp` command on Windows during `pnpm setup` by looking for `chcp.com` before `chcp` [pnpm/pnpm#13991](https://github.com/pnpm/pnpm/issues/13991).
|
|
92
|
+
|
|
93
|
+
- A custom fetcher can no longer replace the archive integrity that `pnpm-lock.yaml` pins: the locked value is restored after a `canFetch` or `fetch` hook rewrites the resolution, and delegating a locked archive to a directory or git source now fails instead of installing unverified content.
|
|
94
|
+
|
|
95
|
+
The Rust CLI now also loads the pnpmfiles named by the `pnpmfile` setting (a single path or an ordered list), and hands custom fetchers native `localTarball` and `remoteTarball` callbacks — including on a fresh install that has to compute a missing tarball integrity, which is then reused by later offline installs. File maps a fetcher returns are accepted only when they match what those native callbacks extracted.
|
|
96
|
+
|
|
97
|
+
- `pnpm dedupe` accepts the `pnpm install` options that pnpm documents for it — `--lockfile-only`, `--ignore-scripts`, `--offline`, and `--prefer-offline` — instead of rejecting them with `unexpected argument`. Without `--lockfile-only`, `pnpm dedupe` now also updates `node_modules`, as an install does [#14107](https://github.com/pnpm/pnpm/issues/14107).
|
|
98
|
+
|
|
99
|
+
- `pnpm dedupe` in the Rust engine now fails with `ERR_PNPM_PEER_DEP_ISSUES` when `strictPeerDependencies` is set and unresolved peer dependency issues remain after deduplication, matching the TypeScript CLI [#14099](https://github.com/pnpm/pnpm/issues/14099). Previously it only ever printed a warning, regardless of the setting.
|
|
100
|
+
|
|
101
|
+
- `pnpm deploy --prod` and `pnpm deploy --no-optional` no longer list the excluded dependency groups in the deployed `package.json` and `pnpm-lock.yaml`. The deployed lockfile referenced packages that the deploy left out of its graph, so installing in the deploy directory afterwards created dangling symlinks [#13623](https://github.com/pnpm/pnpm/issues/13623).
|
|
102
|
+
|
|
103
|
+
- `pnpm install --dev` and `pnpm deploy --dev` no longer install optional dependencies, and `--prod` now takes precedence when combined with `--dev`, matching the TypeScript pnpm CLI.
|
|
104
|
+
|
|
105
|
+
- A dependency published with `"bin": ""`, such as `url-loader@1.1.2`, no longer fails the install with `ERR_PNPM_CMD_SHIM_PROBE_SHIM_SOURCE` [#13962](https://github.com/pnpm/pnpm/issues/13962). An empty `bin` declares no command, as it does in pnpm v11, so no shim is written for the package; a `directories.bin` entry on the same package is still linked.
|
|
106
|
+
|
|
107
|
+
- A dependency pinned to an exact version carrying semver build metadata (`"@parcel/codeframe": "2.0.0-canary.1718+d8408010f"`) installs again instead of failing with `ERR_PNPM_NO_MATCHING_VERSION` [#14096](https://github.com/pnpm/pnpm/issues/14096). npm strips build metadata when it publishes a version, so pnpm strips it from the version it looks up, matching npm and pnpm v11.
|
|
108
|
+
|
|
109
|
+
- A package's `files` entries now match only at the package root, the way npm reads them. A bare `src` used to also match nested directories such as `example/src`, so a dependency installed from git could ship the repository's own example app. The same filter decides what `pnpm pack` and `pnpm publish` put in a tarball and what `pnpm deploy` copies, so those stop carrying the extra files too. Exclusions such as `!**/__tests__` and `!*.map` still match at any depth. A package already in the store keeps its old file set until it is fetched again.
|
|
110
|
+
|
|
111
|
+
- A `pnpm install --filter <selector>` run that has nothing to do now reports "Already up to date" without entering the install pipeline, the same way an unfiltered `pnpm install` already did [#14033](https://github.com/pnpm/pnpm/issues/14033).
|
|
112
|
+
|
|
113
|
+
- On Windows, upgrading pnpm no longer leaves a stale `pnpm.ps1` behind. PowerShell resolves `pnpm.ps1` ahead of `pnpm.cmd`, so a shim written by an older installation kept running the previous version. Linking the pnpm CLI's bins now deletes it [#13919](https://github.com/pnpm/pnpm/issues/13919).
|
|
114
|
+
|
|
115
|
+
- Settings written to a `pnpm-workspace.yaml` block that uses inline (flow) YAML — `catalog: { foo: ^1.0.0 }`, `overrides: { foo: 1.0.0 }`, `minimumReleaseAgeExclude: [foo@1.0.0]` — are now edited in place instead of failing or corrupting the file. `pnpm audit`, `pnpm link`, `pnpm approve-builds`, `pnpm patch`, `pnpm add --config`, and catalog updates all keep the block's flow style, its other entries, and its comments [#14108](https://github.com/pnpm/pnpm/issues/14108).
|
|
116
|
+
|
|
117
|
+
- A frozen install no longer rewrites the `packageManagerDependencies` block of `pnpm-lock.yaml`. When the pnpm version pinned by `devEngines.packageManager` (or by `packageManager`) is missing from the lockfile or no longer matches it, `--frozen-lockfile` now fails with `ERR_PNPM_FROZEN_LOCKFILE_WITH_OUTDATED_LOCKFILE` instead of resolving the version and saving it, so a manifest whose pin was bumped without regenerating the lockfile can no longer pass CI [#14009](https://github.com/pnpm/pnpm/issues/14009).
|
|
118
|
+
|
|
119
|
+
- When a git-hosted dependency is blocked from running build scripts, the error now suggests an `allowBuilds` entry that actually approves it. It quoted the bare package name, which never matches a git-hosted package, so following the suggestion left the install failing the same way [#14002](https://github.com/pnpm/pnpm/issues/14002).
|
|
120
|
+
|
|
121
|
+
- A git dependency installed over HTTPS from a hosted repository now keeps its branch, tag, or version range in the specifier recorded in `package.json`. It was written back without one, so the next `pnpm update` moved the dependency to the repository's default branch [#13999](https://github.com/pnpm/pnpm/issues/13999).
|
|
122
|
+
|
|
123
|
+
- Added support for the `globalPnpmfile` setting, which names a user-level pnpmfile that runs for every project ahead of the project's own. Like pnpm, it is left out of the lockfile's `pnpmfileChecksum`, so editing it does not decide whether a lockfile is still current. `pnpmfile` and `globalPnpmfile` are now also readable from `PNPM_CONFIG_PNPMFILE` and `PNPM_CONFIG_GLOBAL_PNPMFILE`.
|
|
124
|
+
|
|
125
|
+
- Fix recursive `pnpm update <name>@<version>` so an exact pinned update stays scoped to the requested version line: copies of the same package on another major line — or, for a `0.x` request, another minor line — keep their locked resolution instead of being re-resolved along with the target.
|
|
126
|
+
|
|
127
|
+
- Under `nodeLinker: hoisted`, a dependency declared against a peer-resolution variant of a package version is no longer dropped from the installed layout. All variants of a version share one hoisted copy, and edges pointing at any of them now resolve to it, so the depending project keeps the package in its `.package-map.json` and the depending package keeps it in its `node_modules/.bin`.
|
|
128
|
+
|
|
129
|
+
- A repeat `pnpm install` with `nodeLinker: hoisted` is a no-op again when a workspace package declares the dependencies [#14001](https://github.com/pnpm/pnpm/issues/14001). The hoisted linker installs them into the root `node_modules`, but the up-to-date check previously looked under each package's own `node_modules` and reinstalled the whole tree every time. A hoisted install also no longer reports the packages it just wrote as broken.
|
|
130
|
+
|
|
131
|
+
- `ignorePnpmfile` can now be set in `pnpm-workspace.yaml` and read from `PNPM_CONFIG_IGNORE_PNPMFILE`, not only passed as `--ignore-pnpmfile`, so a project or a machine can turn pnpmfile hooks off once instead of adding the flag to every command. The flag still applies on top. As in pnpm, the global `config.yaml` cannot set it: a pnpmfile belongs to the project that ships it.
|
|
132
|
+
|
|
133
|
+
- Fixed pnpm failing to read `.modules.yaml` files containing long dependency paths [#13875](https://github.com/pnpm/pnpm/issues/13875). The manifest is now parsed as JSON (the format pnpm writes it in), falling back to the YAML parser only for manifests written by old pnpm versions.
|
|
134
|
+
|
|
135
|
+
- `--config.minimum-release-age` is honored again, along with `--config.minimum-release-age-exclude`, `--config.minimum-release-age-ignore-missing-time` and `--config.minimum-release-age-strict`. Each overrides the matching `pnpm-workspace.yaml` setting, and the exclude flag may be repeated to build a list [#13929](https://github.com/pnpm/pnpm/issues/13929).
|
|
136
|
+
|
|
137
|
+
- An unreadable `node_modules/.modules.yaml` no longer makes `pnpm install` delete `node_modules` and relink every package on each run. The unparsable state file is now reported as an error instead [#14062](https://github.com/pnpm/pnpm/issues/14062).
|
|
138
|
+
|
|
139
|
+
- `pnpm outdated` and `pnpm update --interactive` now leave out the dependencies listed in `updateConfig.ignoreDependencies`, instead of reporting them and offering them for update.
|
|
140
|
+
|
|
141
|
+
- Fixed `pnpm outdated` and `pnpm update --interactive` offering versions blocked by `minimumReleaseAge` [pnpm/pnpm#14004](https://github.com/pnpm/pnpm/issues/14004).
|
|
142
|
+
|
|
143
|
+
- `pnpm pack` writes tar entries in the POSIX ustar header form npm uses — `ustar\0` magic and the explicit `0` regular-file typeflag — instead of the GNU form with a NUL typeflag, which strict tar readers such as publint mistake for the end-of-archive marker [#13924](https://github.com/pnpm/pnpm/issues/13924).
|
|
144
|
+
|
|
145
|
+
- Fixed `--config.ignore-scripts=true` not being honored by CLI commands such as `pnpm pack` [#13986](https://github.com/pnpm/pnpm/issues/13986).
|
|
146
|
+
|
|
147
|
+
- `pnpm install <pkg>` now adds the package, the same as `pnpm add <pkg>` and matching the JavaScript CLI. It previously ended in a usage error: `pnpm i valibot` printed `error: unexpected argument 'valibot' found` instead of saving the dependency [#13886](https://github.com/pnpm/pnpm/issues/13886).
|
|
148
|
+
|
|
149
|
+
- Fixed Plug'n'Play projects to preload `.pnp.cjs` for dependency and project lifecycle scripts, `pnpm run`, and `pnpm exec`. The generated loader now also exposes the public Yarn PnP API surface.
|
|
150
|
+
|
|
151
|
+
- Workspace packages declared with a parent-relative pattern in `pnpm-workspace.yaml` (`../shared`, `../../docs/*`) are discovered again. They were dropped from the project list, so `pnpm list -r` and `--filter` did not see them and a frozen install of a lockfile that already held their importer entries failed with `ERR_PNPM_PACKAGE_MANAGER_UNSAFE_IMPORTER_PATH`.
|
|
152
|
+
|
|
153
|
+
- `pnpm pkg get` and `pnpm pkg set` now accept hyphens inside a dot-notation property path, so `pnpm pkg get dependencies.some-package-name` reads the key instead of failing with `ERR_PNPM_UNEXPECTED_TOKEN_IN_PROPERTY_PATH`. The bracketed and quoted forms already worked and are unchanged.
|
|
154
|
+
|
|
155
|
+
- A path named by the `pnpmfile` setting that is not on disk now fails with `ERR_PNPM_PNPMFILE_NOT_FOUND` and names the file, instead of surfacing as a generic pnpmfile execution failure. Discovery of the default `.pnpmfile.mjs` / `.pnpmfile.cjs` is unaffected: a project that ships neither still installs normally.
|
|
156
|
+
|
|
157
|
+
- `pnpm remove` now prunes undecided entries (`"set this to true or false"`) from `allowBuilds` in `pnpm-workspace.yaml` when `sharedWorkspaceLockfile: true` and the corresponding packages are removed [pnpm/pnpm#13892](https://github.com/pnpm/pnpm/issues/13892).
|
|
158
|
+
|
|
159
|
+
- Suggest `pnpm shim add <runtime>` after pinning a project runtime when no project-aware global shim is installed. Explicit project-aware shims now reject unrelated global bin conflicts and are restored after a matching global package is removed or replaced by a version that drops its bin.
|
|
160
|
+
|
|
161
|
+
- `pnpm -r update --latest --depth 0 <selector>` now fails with `ERR_PNPM_NO_PACKAGE_IN_DEPENDENCIES` when no project in the workspace declares a matching dependency, instead of silently doing nothing.
|
|
162
|
+
|
|
163
|
+
- Fixed repeat installs paying for a full lockfile comparison forever after a modification-time collision. When a `package.json` was last modified inside the same clock tick that the install recorded as its validation baseline — a fast install, a checkout that copied files with identical timestamps, or any filesystem that keeps only whole-second modification times — the manifest kept reading as possibly-modified, so every later `pnpm install` and `verify-deps-before-run` check re-compared the manifests against the lockfile instead of taking the fast path [#13907](https://github.com/pnpm/pnpm/issues/13907).
|
|
164
|
+
|
|
165
|
+
- The Rust CLI now honors five settings it recognized but ignored: `updateNotifier`, `legacyDirFiltering`, `initAuthorName` / `initAuthorEmail` / `initAuthorUrl`, `initLicense`, and `initVersion`. `pnpm install` and `pnpm add` check once a day for a newer pnpm and print how to get it (turn it off with `updateNotifier: false`); a `{<dir>}` filter selector can go back to matching the subtree below the directory with `legacyDirFiltering: true`; and `pnpm init` writes the configured author, license, and version into the `package.json` it scaffolds. `PNPM_CONFIG_INIT_VERSION` is now read as well.
|
|
166
|
+
|
|
167
|
+
`maxsockets`, npm's spelling of `maxSockets`, is no longer ignored: both spellings are read from `pnpm-workspace.yaml`, the global config file, the environment, and the command line, in that increasing order of precedence — a value passed on the command line now wins even when the two sides spelled the setting differently.
|
|
168
|
+
|
|
169
|
+
A `lastUpdateCheck` timestamp dated in the future — after a clock change, a restored snapshot, or a hand-edited state file — no longer silences the update check until that time comes around.
|
|
170
|
+
|
|
171
|
+
`legacyDirFiltering` no longer reaches the workspace-root selectors pnpm generates for itself: the `!{<workspace-root>}` exclusion a recursive `run` / `exec` / `add` / `test` appends, and the `{<workspace-root>}` inclusion `--workspace-root` appends. Read as subtree matches they named every project below the root, so a recursive command under the setting selected nothing at all, and `--workspace-root` pulled in every project below the root instead of the root alone [#14101](https://github.com/pnpm/pnpm/issues/14101).
|
|
172
|
+
|
|
173
|
+
- `pnpm sbom` now honours `--filter-prod`, the full `--filter` selector syntax (dependency queries such as `pkg...`, `{dir}` and glob paths, `[since]` change queries, exclusions), and `--workspace-root`. Selectors that match no project print `No projects matched the filters` and write no SBOM, and `--split` emits its per-project SBOMs in a stable order.
|
|
174
|
+
|
|
175
|
+
The universal `--fail-if-no-match` flag is supported too: any filtered command whose selectors match no workspace project now exits with code 1 [#14064](https://github.com/pnpm/pnpm/issues/14064).
|
|
176
|
+
|
|
177
|
+
- `pnpm sbom` now fails with `ERR_PNPM_SBOM_MISSING_IMPORTERS` when `pnpm-lock.yaml` has no entry for a selected project, instead of writing an SBOM that under-reports that project's dependencies. Previously this crashed with `Cannot read properties of undefined (reading 'devDependencies')`.
|
|
178
|
+
|
|
179
|
+
- `pnpm self-update` now rewrites a simple `devEngines.packageManager.version` range (`^`/`~`) to the newly installed version, keeping the operator — matching how `pnpm update` and `pnpm runtime set` rewrite ranges. Complex ranges such as `>=8.0.0` that the new version satisfies are still left unchanged [#13935](https://github.com/pnpm/pnpm/issues/13935).
|
|
180
|
+
|
|
181
|
+
- `pnpm update` now preserves the existing range operator when updating a prerelease dependency. See pnpm/pnpm#7002.
|
|
182
|
+
|
|
183
|
+
- `pnpm update <name>@<version>` now fails with `ERR_PNPM_UPDATE_VERSION_ON_INDIRECT_DEP` when the package is not a direct dependency of any selected project, instead of quietly updating it to whatever a fresh install would resolve. There is nowhere to record the version in that case, so the request cannot be honored, and the error points at the `overrides` entry that does pin a transitive dependency. Ranges and tags are unaffected, and a package that any selected project declares directly still takes its version as before.
|
|
184
|
+
|
|
185
|
+
- `trustPolicy: no-downgrade` no longer aborts the install with `ERR_PNPM_MISSING_TIME` on registries that serve no per-version `time` field when `minimumReleaseAgeIgnoreMissingTime` is set. The trust check reads the same publish dates the `minimumReleaseAge` check does, so it now honors the same opt-in and skips the affected package with a warning [#12446](https://github.com/pnpm/pnpm/issues/12446).
|
|
186
|
+
|
|
187
|
+
`minimumReleaseAgeIgnoreMissingTime` no longer lets a lockfile entry the registry does not list pass the `minimumReleaseAge` check during lockfile verification. The opt-in covers a registry that cannot date its releases; a packument that does date every version it lists is saying it never published this one, which stays a hard failure.
|
|
188
|
+
|
|
189
|
+
The missing-`time` warning now names the check it is reporting on, so a package whose `minimumReleaseAge` and `trustPolicy` checks are both skipped warns about both instead of only the first.
|
|
190
|
+
|
|
191
|
+
- `pnpm update <pkg>@<tag>` now saves the version the dist tag resolved to in `package.json`, keeping the range operator the dependency already declared, instead of saving the tag itself. A dependency declared through a `catalog:` reference, a `workspace:` or `npm:` alias, or a path or git specifier keeps its declaration, and one that already tracks a dist tag records the tag asked for [#14092](https://github.com/pnpm/pnpm/issues/14092).
|
|
192
|
+
|
|
193
|
+
- `pnpm update <pkg>@<version>` now updates only the selected packages and leaves unrelated dependencies unchanged. A selector that renames the package it installs — `pnpm update <alias>@npm:<pkg>@<version>` or the `jsr:` equivalent — now targets the package the alias installs rather than the alias.
|
|
194
|
+
|
|
195
|
+
- `pnpm version <bump>` with `--dry-run` no longer edits `package.json` files. It now only reports the bumps it would make, and skips the working tree check, the version lifecycle scripts, the commit, and the tag [`pnpm/pnpm#13953`](https://github.com/pnpm/pnpm/issues/13953).
|
|
196
|
+
|
|
197
|
+
- On Windows, `pnpm store path` now returns a conventional drive path without the `\\?\` verbatim prefix when the project and pnpm home are on different drives [#13987](https://github.com/pnpm/pnpm/issues/13987).
|
|
198
|
+
|
|
199
|
+
## 12.0.0-rc.8
|
|
200
|
+
|
|
201
|
+
### Minor Changes
|
|
202
|
+
|
|
203
|
+
- `packageImportMethod: auto` now tries hardlinks before cloning on Linux. A reflink materializes a new inode and copies extent bookkeeping inside the filesystem's metadata trees, where a hardlink is one directory entry — on btrfs this roughly halves the time an install spends materializing `node_modules` from a warm store. ext4 installs are unchanged (cloning was never supported there, so `auto` already hardlinked), and macOS keeps clone-first, where APFS `clonefile` is the platform's cheap primitive. Cloning remains the fallback when the store refuses hardlinks, and remains available explicitly via `packageImportMethod: clone`.
|
|
204
|
+
|
|
205
|
+
This ships with pnpm 12 only: pnpm 11's importer deliberately keeps clone-first, since changing what the default materializes on disk is not a point-release change.
|
|
206
|
+
|
|
207
|
+
### Patch Changes
|
|
208
|
+
|
|
209
|
+
- `pnpm approve-builds` now removes `onlyBuiltDependencies`, `onlyBuiltDependenciesFile`, `neverBuiltDependencies`, and `ignoredBuiltDependencies` from `pnpm-workspace.yaml` when it writes `allowBuilds`. Those settings were replaced by `allowBuilds` in pnpm 11 and silently ignored since, so a workspace migrated from pnpm 10 kept them around looking active.
|
|
210
|
+
|
|
211
|
+
- `pnpm audit` no longer reports a patched version that was never published or is deprecated. The inferred patched range (e.g. `>=4.17.24` from `<=4.17.23`) is now checked against the registry packument, and the report is corrected to the lowest non-deprecated published version that satisfies it (e.g. `>=4.18.1` when `4.17.24` does not exist and `4.18.0` is deprecated). When no published version satisfies the range, the report shows `Patched versions: None`. This also prevents `pnpm audit --fix` from adding overrides or `minimumReleaseAgeExclude` entries for patches that do not exist [#13824](https://github.com/pnpm/pnpm/issues/13824).
|
|
212
|
+
|
|
213
|
+
`pnpm audit --fix` and `pnpm audit --fix update` no longer add a `minimumReleaseAgeExclude` entry when the registry packument shows that the minimum patched version was never published. Previously such entries were written for versions that do not exist, which would have let a later publish of that version bypass the `minimumReleaseAge` gate [#11563](https://github.com/pnpm/pnpm/issues/11563).
|
|
214
|
+
|
|
215
|
+
The `--json` output of `pnpm audit` now returns `patched_versions: null` for advisories whose inferred patch is not available (never published, skipped, yanked, or deprecated), making it easier for tooling to distinguish "no fix available" from "fix available at version X".
|
|
216
|
+
|
|
217
|
+
- Re-fetch full registry metadata when `minimumReleaseAge` is enabled and an abbreviated packument's `time` map omits timestamps for some versions. This prevents mature versions from being filtered out and resolution from falling back to the lowest matching version [pnpm/pnpm#13741](https://github.com/pnpm/pnpm/issues/13741).
|
|
218
|
+
|
|
219
|
+
- A config dependency carrying an inline integrity (the `<version>+<integrity>` form, or the object form without a `tarball`) now takes its tarball URL from the registry's packument instead of deriving it from the registry URL, so migrating one costs an extra metadata request. On a registry that serves tarballs from a path pnpm cannot derive, GitLab's group endpoint for one, installing such a config dependency failed with a 404 while the same package installed fine as a regular dependency [#13765](https://github.com/pnpm/pnpm/issues/13765).
|
|
220
|
+
|
|
221
|
+
- Don't treat files like `license16.json` as a package license when deciding if the workspace LICENSE file should be included in the packed package.
|
|
222
|
+
|
|
223
|
+
- Reduced warm update overhead by limiting virtual-store bin linking and ignored-script build bookkeeping to packages materialized by the current install.
|
|
224
|
+
|
|
225
|
+
- `pnpm init` now pins the exact pnpm version instead of a `^` range, and records it in the `packageManager` field alongside `devEngines.packageManager`. Corepack reads only `packageManager` and accepts nothing but an exact version, so it rejected the generated `package.json` with "expected a semver version" [pnpm/pnpm#13969](https://github.com/pnpm/pnpm/issues/13969). A package created inside an existing workspace is still left unpinned — it follows the pin at the workspace root — and `--no-init-package-manager` still scaffolds a manifest without any pin. In pnpm 12, `pnpm init` also honors `initType` and its `--init-type` flag, so the manifest it writes is the same one pnpm 11 writes.
|
|
226
|
+
|
|
227
|
+
- `node-linker=hoisted` installs no longer produce broken layouts on graphs with version conflicts. Three hoister fixes, aligning with `@yarnpkg/nm` (which the TypeScript CLI delegates to):
|
|
228
|
+
|
|
229
|
+
- A version-conflicted package depended on by several packages kept its conflicting transitive dependencies under only one of the dependents, so requiring them through any other dependent resolved the wrong (root-hoisted) version — for example an ESM `parse-entities@4` resolving `character-entities-legacy` v1 instead of v3, which crashes with `ERR_IMPORT_ATTRIBUTE_MISSING` on Node.js 22. Hoist decisions are now made per parent path on decoupled copies (ports upstream's `decoupleGraphNode`).
|
|
230
|
+
- Peer-resolution variants of one package version now collapse onto a single copy (ports pnpm v11's `depPathByPkgId` mapping) instead of conflict-nesting a copy under every dependent — on peer-variant-heavy graphs (such as `bit`'s) the old behavior also made the per-path walk explode.
|
|
231
|
+
- Hoisting no longer shadows names a subtree resolves through an ancestor directory: a candidate is refused when a nearer ancestor holds a different version of its name (upstream's "filled by parent" scan) or when the hoist root's subtree already resolves that name from above (upstream's `usedDependencies` gate).
|
|
232
|
+
|
|
233
|
+
- `pnpm update --no-save <pkg>@<version>` now keeps the manifest's declared importer specifier in `pnpm-lock.yaml` when the requested version satisfies that range, so a subsequent `--frozen-lockfile` install no longer fails because the lockfile records the requested version as the specifier.
|
|
234
|
+
|
|
235
|
+
- Reduced registry metadata requests during dependency resolution by reusing cached metadata when lockfile preferences prove that no uncached version can win [pnpm/pnpm#13976](https://github.com/pnpm/pnpm/issues/13976).
|
|
236
|
+
|
|
237
|
+
- Improved install performance: the store-index writer's shutdown now overlaps the install's final lockfile and `.modules.yaml` writes instead of extending the install's tail.
|
|
238
|
+
|
|
239
|
+
- A setting in the global `config.yaml` that pnpm does not read from that file, or that is written in kebab-case instead of camelCase, is now reported instead of being ignored silently.
|
|
240
|
+
|
|
241
|
+
- A forced full re-resolution (config changes the fast lockfile update cannot absorb, such as a changed override or `packageExtensions`) no longer moves dependencies whose recorded versions still satisfy their ranges. The prior lockfile now pins each still-satisfied edge even when its recorded subtree cannot be reused wholesale, so open ranges like `@types/node: "*"` keep their locked versions instead of collapsing onto the highest locked version and churning the lockfile.
|
|
242
|
+
|
|
243
|
+
- Improved fresh resolution performance when package metadata is already cached.
|
|
244
|
+
|
|
245
|
+
- Improved fresh installs by reusing the store index and verified-files cache during dependency materialization.
|
|
246
|
+
|
|
247
|
+
- A runtime installed through `devEngines.runtime` now matches the host when `supportedArchitectures` lists several platforms. Listing `os: [darwin, linux]` and `cpu: [x64, arm64]` used to install the runtime built for the first entry of each list, so a machine running Linux on arm64 got a macOS x64 Node.js that could not execute [#13898](https://github.com/pnpm/pnpm/issues/13898).
|
|
248
|
+
|
|
249
|
+
- `pnpm self-update <tag>` no longer downgrades when the dist-tag points at the pnpm version already running and that version is younger than `minimumReleaseAge`. The maturity cutoff moved the tag back to the previous mature release, so `pnpm self-update next-12` on v12.0.0-rc.4 switched to v12.0.0-rc.3.
|
|
250
|
+
|
|
251
|
+
- Improved install performance: large tarballs are now verified and extracted while they download, so the biggest packages — whose downloads finish last — no longer add their whole extraction to the end of the install.
|
|
252
|
+
|
|
3
253
|
## 12.0.0-rc.7
|
|
4
254
|
|
|
5
255
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -51,6 +51,15 @@ To quote the [Rush](https://rushjs.io/) team:
|
|
|
51
51
|
</picture>
|
|
52
52
|
</a>
|
|
53
53
|
</td>
|
|
54
|
+
<td align="center" valign="middle">
|
|
55
|
+
<a href="https://notion.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
56
|
+
<picture>
|
|
57
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/notion.svg" />
|
|
58
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/notion_light.svg" />
|
|
59
|
+
<img src="https://pnpm.io/img/users/notion.svg" width="80" alt="Notion" />
|
|
60
|
+
</picture>
|
|
61
|
+
</a>
|
|
62
|
+
</td>
|
|
54
63
|
</tr>
|
|
55
64
|
</tbody>
|
|
56
65
|
</table>
|
|
@@ -130,6 +139,9 @@ To quote the [Rush](https://rushjs.io/) team:
|
|
|
130
139
|
</picture>
|
|
131
140
|
</a>
|
|
132
141
|
</td>
|
|
142
|
+
<td align="center" valign="middle">
|
|
143
|
+
<a href="https://latitude.so/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/latitude.svg" width="160" alt="Latitude"></a>
|
|
144
|
+
</td>
|
|
133
145
|
</tr>
|
|
134
146
|
</tbody>
|
|
135
147
|
</table>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"lastValidatedTimestamp":
|
|
2
|
+
"lastValidatedTimestamp": 1787525309860,
|
|
3
3
|
"projects": {
|
|
4
4
|
"/home/runner/_work/pnpm/pnpm/pnpm/npm/pnpm/temp-deploy": {
|
|
5
5
|
"name": "pacquet",
|
|
6
|
-
"version": "12.0.0-rc.
|
|
6
|
+
"version": "12.0.0-rc.9"
|
|
7
7
|
}
|
|
8
8
|
},
|
|
9
9
|
"pnpmfiles": [],
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"@commitlint/cli": "^21.2.2",
|
|
26
26
|
"@commitlint/config-conventional": "^21.2.2",
|
|
27
27
|
"@commitlint/prompt-cli": "^21.2.2",
|
|
28
|
-
"@cyclonedx/cyclonedx-library": "10.
|
|
28
|
+
"@cyclonedx/cyclonedx-library": "10.2.0",
|
|
29
29
|
"@eslint/js": "^10.0.1",
|
|
30
|
-
"@inquirer/prompts": "^8.
|
|
30
|
+
"@inquirer/prompts": "^8.6.0",
|
|
31
31
|
"@jest/globals": "30.4.1",
|
|
32
32
|
"@npm/types": "^2.1.0",
|
|
33
33
|
"@openpgp/web-stream-tools": "0.3.1",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@pnpm/tabtab": "^0.5.4",
|
|
48
48
|
"@pnpm/tgz-fixtures": "0.0.0",
|
|
49
49
|
"@reflink/reflink": "0.1.19",
|
|
50
|
-
"@rushstack/worker-pool": "0.7.
|
|
50
|
+
"@rushstack/worker-pool": "0.7.25",
|
|
51
51
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
52
52
|
"@types/adm-zip": "^0.5.8",
|
|
53
53
|
"@types/archy": "0.0.36",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"encode-registry": "^3.0.1",
|
|
130
130
|
"esbuild": "^0.28.2",
|
|
131
131
|
"escape-string-regexp": "^5.0.0",
|
|
132
|
-
"eslint": "^10.
|
|
132
|
+
"eslint": "^10.9.0",
|
|
133
133
|
"eslint-plugin-import-x": "^4.17.1",
|
|
134
134
|
"eslint-plugin-jest": "^29.16.1",
|
|
135
135
|
"eslint-plugin-n": "^18.3.0",
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
"graph-cycles": "3.0.0",
|
|
150
150
|
"hosted-git-info": "npm:@pnpm/hosted-git-info@1.0.0",
|
|
151
151
|
"https-proxy-server-express": "0.1.2",
|
|
152
|
-
"human-id": "^4.2.
|
|
152
|
+
"human-id": "^4.2.1",
|
|
153
153
|
"husky": "^9.1.7",
|
|
154
154
|
"hyperdrive-schemas": "^2.0.0",
|
|
155
155
|
"ini": "6.0.0",
|
|
@@ -190,7 +190,6 @@
|
|
|
190
190
|
"p-every": "^2.0.0",
|
|
191
191
|
"p-filter": "^4.1.0",
|
|
192
192
|
"p-limit": "^7.3.1",
|
|
193
|
-
"p-map-values": "^0.1.0",
|
|
194
193
|
"p-queue": "^9.3.3",
|
|
195
194
|
"parse-json": "^8.3.0",
|
|
196
195
|
"parse-npm-tarball-url": "^5.0.0",
|
|
@@ -280,36 +279,26 @@
|
|
|
280
279
|
"minimumReleaseAge": 1440,
|
|
281
280
|
"minimumReleaseAgeExclude": [
|
|
282
281
|
"@pnpm/*",
|
|
283
|
-
"@rushstack/worker-pool@0.7.18",
|
|
284
282
|
"@zkochan/*",
|
|
285
283
|
"better-path-resolve",
|
|
286
|
-
"body-parser@2.2.1",
|
|
287
284
|
"can-link",
|
|
288
285
|
"can-write-to-dir",
|
|
289
286
|
"cmd-extension",
|
|
290
287
|
"comver-to-semver",
|
|
291
288
|
"dir-is-case-sensitive",
|
|
292
|
-
"esbuild@0.28.1",
|
|
293
289
|
"@esbuild/*",
|
|
294
|
-
"express@4.22.1",
|
|
295
290
|
"glob@11.1.0",
|
|
296
|
-
"handlebars@4.7.9",
|
|
297
291
|
"is-inner-link",
|
|
298
292
|
"is-subdir",
|
|
299
|
-
"jws@3.2.3",
|
|
300
|
-
"lodash@4.17.23",
|
|
301
293
|
"make-empty-dir",
|
|
302
294
|
"normalize-registry-url",
|
|
303
|
-
"p-map-values",
|
|
304
295
|
"parse-npm-tarball-url@5.0.0",
|
|
305
296
|
"path-absolute",
|
|
306
297
|
"path-temp",
|
|
307
298
|
"pnpm",
|
|
308
299
|
"preferred-pm",
|
|
309
300
|
"promise-share",
|
|
310
|
-
"qs@6.14.2 || 6.15.2",
|
|
311
301
|
"read-ini-file",
|
|
312
|
-
"read-json5-file",
|
|
313
302
|
"read-yaml-file",
|
|
314
303
|
"realpath-missing",
|
|
315
304
|
"rename-overwrite",
|
|
@@ -320,15 +309,12 @@
|
|
|
320
309
|
"safe-execa",
|
|
321
310
|
"safe-promise-defer",
|
|
322
311
|
"symlink-dir",
|
|
323
|
-
"tar@7.5.10",
|
|
324
312
|
"which-pm",
|
|
325
|
-
"which-pm-runs",
|
|
326
313
|
"write-ini-file",
|
|
327
314
|
"write-json5-file",
|
|
328
315
|
"write-yaml-file",
|
|
329
|
-
"tmp@0.2.6",
|
|
330
316
|
"http-proxy-middleware@3.0.7",
|
|
331
|
-
"get-pnpm@0.0.
|
|
317
|
+
"get-pnpm@0.0.3"
|
|
332
318
|
],
|
|
333
319
|
"minimumReleaseAgeIgnoreMissingTime": true,
|
|
334
320
|
"minimumReleaseAgeStrict": true,
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"./dist/node_modules/node-gyp/gyp/gyp"
|
|
10
10
|
]
|
|
11
11
|
},
|
|
12
|
-
"version": "12.0.0-rc.
|
|
12
|
+
"version": "12.0.0-rc.9",
|
|
13
13
|
"description": "Fast, disk space efficient package manager",
|
|
14
14
|
"keywords": [
|
|
15
15
|
"pnpm",
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
"THIRD-PARTY-NOTICES.md"
|
|
47
47
|
],
|
|
48
48
|
"optionalDependencies": {
|
|
49
|
-
"@pnpm/exe.win32-x64": "12.0.0-rc.
|
|
50
|
-
"@pnpm/exe.win32-arm64": "12.0.0-rc.
|
|
51
|
-
"@pnpm/exe.darwin-x64": "12.0.0-rc.
|
|
52
|
-
"@pnpm/exe.darwin-arm64": "12.0.0-rc.
|
|
53
|
-
"@pnpm/exe.linux-x64": "12.0.0-rc.
|
|
54
|
-
"@pnpm/exe.linux-arm64": "12.0.0-rc.
|
|
55
|
-
"@pnpm/exe.linux-x64-musl": "12.0.0-rc.
|
|
56
|
-
"@pnpm/exe.linux-arm64-musl": "12.0.0-rc.
|
|
49
|
+
"@pnpm/exe.win32-x64": "12.0.0-rc.9",
|
|
50
|
+
"@pnpm/exe.win32-arm64": "12.0.0-rc.9",
|
|
51
|
+
"@pnpm/exe.darwin-x64": "12.0.0-rc.9",
|
|
52
|
+
"@pnpm/exe.darwin-arm64": "12.0.0-rc.9",
|
|
53
|
+
"@pnpm/exe.linux-x64": "12.0.0-rc.9",
|
|
54
|
+
"@pnpm/exe.linux-arm64": "12.0.0-rc.9",
|
|
55
|
+
"@pnpm/exe.linux-x64-musl": "12.0.0-rc.9",
|
|
56
|
+
"@pnpm/exe.linux-arm64-musl": "12.0.0-rc.9"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"preinstall": "node install.js",
|