pnpm-settings-migrator 0.13.0 → 0.15.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 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
 
@@ -180,6 +184,39 @@ consumes them from workspace configuration; their v11 support is unchanged.
180
184
  Invalid values and fields unsupported by the target remain in their sources.
181
185
  The global-only `macosBackup` setting is preserved with a project-refused warning.
182
186
 
187
+ `forceIgnoresPlatform` requires pnpm 11.28.0+ or 12.7.0+. pnpm's defaults differ
188
+ between those majors; the migrator only moves explicit values. For v12,
189
+ `publishWaitTimeout` and `reporter` require 12.7.0+. The timeout is a nonnegative
190
+ safe integer in milliseconds (zero disables waiting); numeric `.npmrc` values
191
+ are converted to YAML numbers. Reporter values are `default`, `append-only`,
192
+ `ndjson`, and `silent`, or preserved environment placeholders.
193
+
194
+ From 11.28.0 / 12.7.0, dynamic `userAgent` values remain in their sources because
195
+ pnpm ignores project values containing environment placeholders. From 11.28.1,
196
+ invalid `patchedDependencies` maps and non-array `packages` values are retained
197
+ with diagnostics. From 12.8.2, `globalShims` belongs in trusted global
198
+ configuration and is retained with an incompatibility warning. Existing
199
+ workspaces containing these incompatible values fail validation before writes.
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
+
183
220
  </details>
184
221
 
185
222
  <details>
@@ -226,11 +263,11 @@ Notes:
226
263
  `overrides`, `saveExact`, and `savePrefix`. Supported subproject `.npmrc`
227
264
  fields are moved there by package name. pnpm 12.0–12.3 does not support
228
265
  `packageConfigs`.
229
- - For v12 targets from 12.4.0, migrating `packageConfigs` or subproject settings
230
- requires `sharedWorkspaceLockfile: false` in the merged workspace. Otherwise
231
- source settings remain with a warning; existing `packageConfigs` blocks
232
- migration until the effective lockfile mode is compatible. This restriction
233
- does not apply to v11. The migrator does not change this mode automatically.
266
+ - For v11 targets and v12 targets from 12.4.0, migrating `packageConfigs` or
267
+ subproject settings requires `sharedWorkspaceLockfile: false` in the merged
268
+ workspace. Otherwise source settings remain with a warning; existing
269
+ `packageConfigs` blocks migration until the effective lockfile mode is
270
+ compatible. The migrator does not change this mode automatically.
234
271
  - Cleanup removes only source keys represented in the final workspace after
235
272
  applying the selected merge strategy.
236
273
  Each source is checked against its own values, including deprecated-key
@@ -254,13 +291,18 @@ Notes:
254
291
  - The migrator does not update the `packageManager` version, CI environment variables,
255
292
  shell setup, or pnpm commands in scripts. When `packageManager` still pins pnpm 10,
256
293
  pass `--compatibility v11` explicitly and update the pin separately.
257
- - Compatibility checks cover pnpm 11.27.1 and 12.6.0, retaining 11.25.0,
258
- 11.26.0, 12.2.1, 12.3.4, 12.4.0, 12.4.2, 12.5.0, and 12.5.1 regressions.
259
- As [audited on 2026-09-24](docs/research/pnpm-settings-bump-2026-09-24.md),
260
- npm `latest` and the highest stable release are 12.6.0; `latest-11` is 11.27.1.
261
- The project is pinned to 12.6.0. The removed `pnpm install --resolution-only` CLI
262
- flag is outside this settings migrator's scope; replace it with
263
- `pnpm peers check` in scripts before upgrading.
294
+ - Compatibility checks cover pnpm 11.28.5 and 12.10.0, including 11.28.0,
295
+ 11.28.1, 11.28.2, 11.28.3, 11.28.4, 12.7.0, 12.8.0, 12.8.1, 12.8.2,
296
+ 12.9.0, and 12.9.1. Earlier regressions remain at 11.25.0,
297
+ 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.
298
+ As [audited on 2026-10-06](docs/research/pnpm-settings-bump-2026-10-06.md),
299
+ npm `latest` is 12.9.1; the highest confirmed stable release is 12.10.0 on
300
+ `next-12`. The v11 target is 11.28.5 on `next-11`, while `latest-11` is
301
+ 11.28.2. The project is pinned to 12.9.1. These checks verify the documented
302
+ fixtures, not every setting in every release. v10 has unit regressions and
303
+ source review through 10.34.6; real v10 consumption remains unverified.
304
+ The removed `pnpm install --resolution-only` CLI flag is outside this settings
305
+ migrator's scope; replace it with `pnpm peers check` in scripts before upgrading.
264
306
 
265
307
  </details>
266
308
 
@@ -294,6 +336,12 @@ for the upstream release and schema references.
294
336
 
295
337
  Force replacing deprecated pnpm settings with new keys and remove old keys during migration.
296
338
 
339
+ For v10, replacing legacy build permissions with `allowBuilds` requires a
340
+ confirmed stable target of 10.26.0 or later. Older or unconfirmed targets keep
341
+ the legacy setting names and report a warning. Canonical `update` sections
342
+ and registry prefixes take precedence over their deprecated aliases, including
343
+ when they come from different configuration sources.
344
+
297
345
  <details>
298
346
  <summary>Deprecated setting conversion examples</summary>
299
347
 
@@ -325,6 +373,10 @@ Strategy to handle conflicts when merging settings with existing `pnpm-workspace
325
373
  `packageConfigs` matcher arrays preserve order and repeated entries because the
326
374
  last matching entry wins. With `merge`, incoming matchers follow existing ones;
327
375
  an overlapping end/start sequence is reused to keep repeated migrations stable.
376
+ `filter` and `filterProd` use the same ordered merging: a repeated inclusion can
377
+ restore projects removed by an earlier exclusion. Cleanup verifies the combined
378
+ selector sequence. If package cleanup is disabled, later `.npmrc` selectors are
379
+ retained when needed to keep repeated migrations stable.
328
380
 
329
381
  ### `--no-yarn-resolutions`
330
382