pnpm-settings-migrator 0.14.0 → 0.16.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/README.md +66 -10
- package/dist/cli.mjs +493 -124
- package/dist/index.d.mts +82 -3
- package/dist/index.mjs +454 -104
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -43,6 +43,10 @@ The CLI no longer prints a startup banner, missing optional files, a zero-change
|
|
|
43
43
|
count, or a duplicate completion message. Use `--version` to see the version.
|
|
44
44
|
Warnings are reserved for settings requiring attention. Information blocks have
|
|
45
45
|
one blank line between them, with no extra blank lines at the start or end.
|
|
46
|
+
URL credentials are hidden in diffs, warnings, and errors. Parser diagnostics
|
|
47
|
+
keep available locations but omit configuration source excerpts. For example,
|
|
48
|
+
`https://user:p@ssword@proxy.example/` is displayed as
|
|
49
|
+
`https://***@proxy.example/`; the stored setting is preserved.
|
|
46
50
|
|
|
47
51
|
Other outcomes are reported according to the files actually changed:
|
|
48
52
|
|
|
@@ -194,6 +198,45 @@ with diagnostics. From 12.8.2, `globalShims` belongs in trusted global
|
|
|
194
198
|
configuration and is retained with an incompatibility warning. Existing
|
|
195
199
|
workspaces containing these incompatible values fail validation before writes.
|
|
196
200
|
|
|
201
|
+
From 11.28.3, non-null `allowBuilds` values must be maps of booleans or strings.
|
|
202
|
+
From 11.28.4, non-null `allowUnusedPatches` must be boolean, and non-null
|
|
203
|
+
`ignoredOptionalDependencies` / `requiredScripts` must be string arrays.
|
|
204
|
+
From 11.28.5, `httpProxy` and `httpsProxy` must be strings, including when empty;
|
|
205
|
+
null is incompatible. Invalid values remain in their sources with diagnostics.
|
|
206
|
+
|
|
207
|
+
For pnpm 12.9.0 and later stable v12 releases, URL-keyed `registries` entries
|
|
208
|
+
can set `networkConcurrency` to a positive safe integer, or null to leave it
|
|
209
|
+
unset. On older or unconfirmed targets, the entire registry setting stays in
|
|
210
|
+
its source when it contains this field.
|
|
211
|
+
|
|
212
|
+
For pnpm 12.10.0 and later stable v12 releases, `nodeLinker` additionally accepts
|
|
213
|
+
`loaded` or `{ type: 'loaded', excluded: ['package-name'] }`, and `lockfile`
|
|
214
|
+
accepts `{ includeResolutionSettings: true }` to record resolution settings in
|
|
215
|
+
the lockfile. Existing linker strings and boolean `lockfile` values still work.
|
|
216
|
+
`failIfNoMatch` also requires 12.10.0 for v12 targets, when pnpm first consumes
|
|
217
|
+
it from workspace configuration. Unsupported or invalid nested settings stay
|
|
218
|
+
intact in their source; the migrator does not add pnpm's defaults.
|
|
219
|
+
|
|
220
|
+
For pnpm 12.11.0 and later stable v12 releases, `permissions` maps dependency
|
|
221
|
+
names or package IDs to `build` and `skills` decisions. Boolean `build`
|
|
222
|
+
decisions override matching `allowBuilds` entries; strings are undecided prompts
|
|
223
|
+
and null leaves a capability unset. Both settings are preserved for pnpm to
|
|
224
|
+
apply its precedence. Unknown capabilities or invalid nested values keep the
|
|
225
|
+
entire source object intact.
|
|
226
|
+
|
|
227
|
+
`skills.dirs` accepts an array of workspace-relative agent skill directories;
|
|
228
|
+
an empty array disables linking. Workspace `provenance` also requires 12.11.0
|
|
229
|
+
for v12 targets and accepts boolean or null values. Its v11 support is unchanged.
|
|
230
|
+
For example, targeting 12.11.0 migrates
|
|
231
|
+
`{ "pnpm": { "permissions": { "example": { "build": false, "skills": true } }, "skills": { "dirs": [".agents/skills"] } } }`
|
|
232
|
+
to equivalent workspace YAML. Targeting 12.10.1 retains these settings with
|
|
233
|
+
diagnostics.
|
|
234
|
+
|
|
235
|
+
pnpm v12 reads `filter` and `filterProd` from CLI arguments or `updateConfig`
|
|
236
|
+
hooks, not workspace YAML. These settings remain in their source with
|
|
237
|
+
diagnostics for v12 targets; existing YAML containing them blocks migration.
|
|
238
|
+
The 12.11.2 hook fix does not add workspace support.
|
|
239
|
+
|
|
197
240
|
</details>
|
|
198
241
|
|
|
199
242
|
<details>
|
|
@@ -240,11 +283,11 @@ Notes:
|
|
|
240
283
|
`overrides`, `saveExact`, and `savePrefix`. Supported subproject `.npmrc`
|
|
241
284
|
fields are moved there by package name. pnpm 12.0–12.3 does not support
|
|
242
285
|
`packageConfigs`.
|
|
243
|
-
- For v12 targets from 12.4.0, migrating `packageConfigs` or
|
|
244
|
-
requires `sharedWorkspaceLockfile: false` in the merged
|
|
245
|
-
source settings remain with a warning; existing
|
|
246
|
-
migration until the effective lockfile mode is
|
|
247
|
-
|
|
286
|
+
- For v11 targets and v12 targets from 12.4.0, migrating `packageConfigs` or
|
|
287
|
+
subproject settings requires `sharedWorkspaceLockfile: false` in the merged
|
|
288
|
+
workspace. Otherwise source settings remain with a warning; existing
|
|
289
|
+
`packageConfigs` blocks migration until the effective lockfile mode is
|
|
290
|
+
compatible. The migrator does not change this mode automatically.
|
|
248
291
|
- Cleanup removes only source keys represented in the final workspace after
|
|
249
292
|
applying the selected merge strategy.
|
|
250
293
|
Each source is checked against its own values, including deprecated-key
|
|
@@ -268,12 +311,15 @@ Notes:
|
|
|
268
311
|
- The migrator does not update the `packageManager` version, CI environment variables,
|
|
269
312
|
shell setup, or pnpm commands in scripts. When `packageManager` still pins pnpm 10,
|
|
270
313
|
pass `--compatibility v11` explicitly and update the pin separately.
|
|
271
|
-
- Compatibility checks cover pnpm 11.28.
|
|
272
|
-
11.28.1, 12.7.0, 12.8.0,
|
|
314
|
+
- Compatibility checks cover pnpm 11.28.5 and 12.11.2, including 11.28.0,
|
|
315
|
+
11.28.1, 11.28.2, 11.28.3, 11.28.4, 12.7.0, 12.8.0, 12.8.1, 12.8.2,
|
|
316
|
+
12.9.0, 12.9.1, 12.10.0, 12.10.1, 12.11.0, and 12.11.1.
|
|
317
|
+
Earlier regressions remain at 11.25.0,
|
|
273
318
|
11.26.0, 11.27.1, 12.2.1, 12.3.4, 12.4.0, 12.4.2, 12.5.0, 12.5.1, and 12.6.0.
|
|
274
|
-
As [audited on 2026-
|
|
275
|
-
npm `latest` is 12.
|
|
276
|
-
`next-12`. The
|
|
319
|
+
As [audited on 2026-10-10](docs/research/pnpm-settings-bump-2026-10-10.md),
|
|
320
|
+
npm `latest` is 12.10.1; the highest confirmed stable release is 12.11.2 on
|
|
321
|
+
`next-12`. The v11 target is 11.28.5 on `next-11`, while `latest-11` is
|
|
322
|
+
11.28.2. The project is pinned to 12.10.1. These checks verify the documented
|
|
277
323
|
fixtures, not every setting in every release. v10 has unit regressions and
|
|
278
324
|
source review through 10.34.6; real v10 consumption remains unverified.
|
|
279
325
|
The removed `pnpm install --resolution-only` CLI flag is outside this settings
|
|
@@ -311,6 +357,12 @@ for the upstream release and schema references.
|
|
|
311
357
|
|
|
312
358
|
Force replacing deprecated pnpm settings with new keys and remove old keys during migration.
|
|
313
359
|
|
|
360
|
+
For v10, replacing legacy build permissions with `allowBuilds` requires a
|
|
361
|
+
confirmed stable target of 10.26.0 or later. Older or unconfirmed targets keep
|
|
362
|
+
the legacy setting names and report a warning. Canonical `update` sections
|
|
363
|
+
and registry prefixes take precedence over their deprecated aliases, including
|
|
364
|
+
when they come from different configuration sources.
|
|
365
|
+
|
|
314
366
|
<details>
|
|
315
367
|
<summary>Deprecated setting conversion examples</summary>
|
|
316
368
|
|
|
@@ -342,6 +394,10 @@ Strategy to handle conflicts when merging settings with existing `pnpm-workspace
|
|
|
342
394
|
`packageConfigs` matcher arrays preserve order and repeated entries because the
|
|
343
395
|
last matching entry wins. With `merge`, incoming matchers follow existing ones;
|
|
344
396
|
an overlapping end/start sequence is reused to keep repeated migrations stable.
|
|
397
|
+
For v11 targets, `filter` and `filterProd` use the same ordered merging: a repeated inclusion can
|
|
398
|
+
restore projects removed by an earlier exclusion. Cleanup verifies the combined
|
|
399
|
+
selector sequence. If package cleanup is disabled, later `.npmrc` selectors are
|
|
400
|
+
retained when needed to keep repeated migrations stable.
|
|
345
401
|
|
|
346
402
|
### `--no-yarn-resolutions`
|
|
347
403
|
|