pnpm 12.12.1 → 12.13.0

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 CHANGED
@@ -1,5 +1,63 @@
1
1
  # pnpm
2
2
 
3
+ ## 12.13.0
4
+
5
+ This release adds the `pnpm profile` and `pnpm token` commands, the `storeIndexFormat: files` setting for stores shared over a network filesystem, and faster Python dependency resolution.
6
+
7
+ ### Minor Changes
8
+
9
+ - Added the `pnpm profile` command to view and update registry user profile settings.
10
+
11
+ - Added `pnpm token` to list, create, and revoke authentication tokens on the registry.
12
+
13
+ - Added the `storeIndexFormat` setting. Set it to `files` to keep a store's package index as one file per package instead of the SQLite `index.db`, for a store on a network filesystem that several machines use at once. SQLite's locking does not work across machines, so concurrent installs on such a store could corrupt `index.db`.
14
+
15
+ - Added the `nodePackageMap` setting, which groups the package-map settings. `nodePackageMap.mode: write-only` writes `node_modules/.package-map.json` for other tools without making Node.js load it. `mode: load` also makes Node.js load the map, like `nodeExperimentalPackageMap: true`. `nodePackageMap.type` replaces `nodePackageMapType`. The old settings still work [#14937](https://github.com/pnpm/pnpm/issues/14937).
16
+
17
+ ```yaml
18
+ nodePackageMap:
19
+ mode: write-only
20
+ type: loose
21
+ ```
22
+
23
+ ### Patch Changes
24
+
25
+ #### Setting up pnpm
26
+
27
+ - `pnpm setup` now works when pnpm was installed with npm on macOS. It installed pnpm from npm's `bin` directory and left a `$PNPM_HOME/bin/pnpm` that could not run [#16855](https://github.com/pnpm/pnpm/issues/16855).
28
+
29
+ - pnpm runs again after `pnpm setup` when `globalShims` enables pnpm. Every command failed with "the global target of the pnpm shim points back at the shim" [#16874](https://github.com/pnpm/pnpm/issues/16874).
30
+
31
+ - A pnpm built for the MinGW target on Windows, such as the MSYS2 package, now installs the MinGW Rust toolchain that `rust-toolchain.toml` names. It used to install the MSVC toolchain.
32
+
33
+ #### Installing packages
34
+
35
+ - On macOS, `pnpm install` no longer fails with `ERR_PNPM_LOCKFILE_WRITE_FILE` when the project is on a virtiofs or SMB share. pnpm now falls back to a regular `fsync` when the file system rejects a full sync [#16846](https://github.com/pnpm/pnpm/issues/16846).
36
+
37
+ - On macOS, `pnpm install`, `pnpm patch-commit`, and other commands that load a pnpmfile no longer hang at random.
38
+
39
+ - `pnpm install` now puts the executables of a Python build backend's requirements on the `PATH` while the backend runs. Projects built with `uv_build` now install. Before, they failed with "uv-build was not properly installed".
40
+
41
+ - Removing a `link:` dependency now also removes its symlink from `node_modules` when `nodeLinker` is `hoisted` [#16884](https://github.com/pnpm/pnpm/issues/16884).
42
+
43
+ - `pnpm-lock.yaml` no longer records the tarball URL of a package installed from a scoped registry, such as one set by `@types:registry=`, when pnpm can rebuild the URL from that registry [#16866](https://github.com/pnpm/pnpm/issues/16866).
44
+
45
+ #### Packing, auditing, and pipelines
46
+
47
+ - `pnpm pack` and `pnpm publish` now pack only `package.json`, the README, the license, and the files named in `main` and `bin` when `files` is an empty array. They used to pack every file in the package [#16889](https://github.com/pnpm/pnpm/issues/16889).
48
+
49
+ - `pnpm audit` and `pnpm audit signatures` no longer check runtimes installed through `devEngines.runtime`, such as `node@runtime:24.21.0`, against the npm package of the same name. `pnpm audit signatures` reported these runtimes as having an invalid registry signature [#16869](https://github.com/pnpm/pnpm/issues/16869).
50
+
51
+ - `pnpm pipeline` now runs the root's tasks when `pnpm-workspace.yaml` lists only the root in `packages` or omits `packages`, as `pnpm -r run` does. A change to a root file in such a workspace no longer triggers a full-run warning. When a full run has no projects to run, `pnpm pipeline` now reports that no projects are selected [#16849](https://github.com/pnpm/pnpm/issues/16849).
52
+
53
+ #### Performance
54
+
55
+ - `pnpm install` resolves Python dependencies faster. With `--lockfile-only`, a project with 10 dependencies now resolves in about 4 seconds, down from about 40. When the index publishes a metadata file beside each wheel (PEP 658), as PyPI does, pnpm downloads only the wheels of the releases it selects.
56
+
57
+ - A repeat install against an existing lockfile no longer reads registry metadata for the dependencies it takes from that lockfile. On a warm store this removes thousands of metadata lookups from a repeat install of a large workspace.
58
+
59
+ - `pnpm install` with `enableModulesDir: false` now verifies the packages already in the store while the dependencies resolve, and checks a package's files in parallel. On a 5,100-package install with the store on a network filesystem, this removed a 19-second pause between resolution and fetching.
60
+
3
61
  ## 12.12.1
4
62
 
5
63
  This release adds OIDC authentication to `pnpm dist-tag` and the `tool:` protocol. `pnpm publish` now checks which registry an `NPM_ID_TOKEN` was issued for before using it.
@@ -1,9 +1,9 @@
1
1
  {
2
- "lastValidatedTimestamp": 1791716235775,
2
+ "lastValidatedTimestamp": 1791876512315,
3
3
  "projects": {
4
4
  "/home/runner/_work/pnpm/pnpm/pnpm/npm/pnpm/temp-deploy": {
5
5
  "name": "pacquet",
6
- "version": "12.12.1",
6
+ "version": "12.13.0",
7
7
  "hasModulesDir": true
8
8
  }
9
9
  },
@@ -49,7 +49,7 @@
49
49
  "@rushstack/worker-pool": "0.7.30",
50
50
  "@stylistic/eslint-plugin": "^5.10.0",
51
51
  "@tybys/wasm-util": "0.10.4",
52
- "@types/adm-zip": "^0.5.8",
52
+ "@types/adm-zip": "^0.6.0",
53
53
  "@types/archy": "0.0.36",
54
54
  "@types/cross-spawn": "^6.0.6",
55
55
  "@types/fs-extra": "^11.0.4",
@@ -137,7 +137,7 @@
137
137
  "escape-string-regexp": "^5.0.0",
138
138
  "eslint": "^10.12.0",
139
139
  "eslint-plugin-import-x": "^4.17.1",
140
- "eslint-plugin-jest": "^29.16.6",
140
+ "eslint-plugin-jest": "^29.16.11",
141
141
  "eslint-plugin-n": "^18.4.1",
142
142
  "eslint-plugin-promise": "^7.3.0",
143
143
  "eslint-plugin-regexp": "^3.1.1",
@@ -199,7 +199,7 @@
199
199
  "p-every": "^2.0.0",
200
200
  "p-filter": "^4.1.0",
201
201
  "p-limit": "^7.3.3",
202
- "p-queue": "^9.3.3",
202
+ "p-queue": "^9.3.5",
203
203
  "parse-json": "^8.3.0",
204
204
  "parse-npm-tarball-url": "^5.0.0",
205
205
  "path-absolute": "^2.0.0",
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "./dist/node_modules/node-gyp/gyp/gyp"
10
10
  ]
11
11
  },
12
- "version": "12.12.1",
12
+ "version": "12.13.0",
13
13
  "description": "Fast, disk space efficient package manager",
14
14
  "keywords": [
15
15
  "pnpm",
@@ -46,20 +46,20 @@
46
46
  "THIRD-PARTY-NOTICES.md"
47
47
  ],
48
48
  "optionalDependencies": {
49
- "@pnpm/exe.win32-x64": "12.12.1",
50
- "@pnpm/exe.win32-arm64": "12.12.1",
51
- "@pnpm/exe.darwin-x64": "12.12.1",
52
- "@pnpm/exe.darwin-arm64": "12.12.1",
53
- "@pnpm/exe.linux-x64": "12.12.1",
54
- "@pnpm/exe.linux-arm64": "12.12.1",
55
- "@pnpm/exe.linux-riscv64": "12.12.1",
56
- "@pnpm/exe.linux-ppc64": "12.12.1",
57
- "@pnpm/exe.linux-s390x": "12.12.1",
58
- "@pnpm/exe.linux-x64-musl": "12.12.1",
59
- "@pnpm/exe.linux-arm64-musl": "12.12.1",
60
- "@pnpm/exe.freebsd-x64": "12.12.1",
61
- "@pnpm/exe.android-arm64": "12.12.1",
62
- "@pnpm/exe.android-x64": "12.12.1"
49
+ "@pnpm/exe.win32-x64": "12.13.0",
50
+ "@pnpm/exe.win32-arm64": "12.13.0",
51
+ "@pnpm/exe.darwin-x64": "12.13.0",
52
+ "@pnpm/exe.darwin-arm64": "12.13.0",
53
+ "@pnpm/exe.linux-x64": "12.13.0",
54
+ "@pnpm/exe.linux-arm64": "12.13.0",
55
+ "@pnpm/exe.linux-riscv64": "12.13.0",
56
+ "@pnpm/exe.linux-ppc64": "12.13.0",
57
+ "@pnpm/exe.linux-s390x": "12.13.0",
58
+ "@pnpm/exe.linux-x64-musl": "12.13.0",
59
+ "@pnpm/exe.linux-arm64-musl": "12.13.0",
60
+ "@pnpm/exe.freebsd-x64": "12.13.0",
61
+ "@pnpm/exe.android-arm64": "12.13.0",
62
+ "@pnpm/exe.android-x64": "12.13.0"
63
63
  },
64
64
  "scripts": {
65
65
  "preinstall": "node install.js",