@pnpm/global.commands 1100.0.31 → 1100.0.33

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 ADDED
@@ -0,0 +1,596 @@
1
+ # @pnpm/global.commands
2
+
3
+ ## 1100.0.33
4
+
5
+ ### Patch Changes
6
+
7
+ - @pnpm/installing.deps-installer@1102.2.2
8
+ - @pnpm/config.reader@1101.11.2
9
+ - @pnpm/store.connection-manager@1100.3.5
10
+ - @pnpm/deps.inspection.list@1100.0.23
11
+
12
+ ## 1100.0.32
13
+
14
+ ### Patch Changes
15
+
16
+ - 25bd5c3: Fixed standalone installer downgrades from pnpm v12 to v11.
17
+ - Updated dependencies [9318a11]
18
+ - Updated dependencies [5a4daec]
19
+ - @pnpm/config.reader@1101.11.1
20
+ - @pnpm/installing.deps-installer@1102.2.1
21
+ - @pnpm/deps.inspection.list@1100.0.22
22
+ - @pnpm/store.connection-manager@1100.3.4
23
+
24
+ ## 1100.0.31
25
+
26
+ ### Patch Changes
27
+
28
+ - be6505a: Hardened global package management:
29
+
30
+ - On Windows, removing or updating a global package now also cleans up the `node.exe` flavor of a bin, so a stale `node.exe` no longer survives on `PATH` after uninstall, and a new global install no longer silently overwrites an existing `node.exe`.
31
+ - `pnpm add -g pnpm@<version>` (and `@pnpm/exe@<version>`) is now rejected like the bare `pnpm` form, pointing to `pnpm self-update`.
32
+ - Dependency aliases read from a global package's manifest are validated before being joined onto `node_modules` paths, preventing a tampered manifest from escaping the install directory.
33
+ - Each global install group is created in its own freshly-made directory (no longer reusing a colliding or pre-existing path).
34
+ - Removing or updating a global package no longer unlinks a bin that belongs to a different globally installed package.
35
+
36
+ - Updated dependencies [dcabb78]
37
+ - Updated dependencies [be6505a]
38
+ - Updated dependencies [3425e80]
39
+ - Updated dependencies [ce5d5a5]
40
+ - Updated dependencies [1dd12bd]
41
+ - Updated dependencies [806c3ec]
42
+ - Updated dependencies [c121235]
43
+ - @pnpm/installing.deps-installer@1102.2.0
44
+ - @pnpm/bins.remover@1100.0.12
45
+ - @pnpm/global.packages@1100.0.10
46
+ - @pnpm/config.reader@1101.11.0
47
+ - @pnpm/store.connection-manager@1100.3.3
48
+ - @pnpm/deps.inspection.list@1100.0.21
49
+
50
+ ## 1100.0.30
51
+
52
+ ### Patch Changes
53
+
54
+ - Updated dependencies [852d537]
55
+ - @pnpm/installing.deps-installer@1102.1.1
56
+ - @pnpm/error@1100.0.1
57
+ - @pnpm/store.connection-manager@1100.3.2
58
+ - @pnpm/bins.linker@1100.0.16
59
+ - @pnpm/cli.utils@1101.0.13
60
+ - @pnpm/config.reader@1101.10.1
61
+ - @pnpm/deps.inspection.list@1100.0.20
62
+ - @pnpm/pkg-manifest.reader@1100.0.9
63
+ - @pnpm/bins.remover@1100.0.11
64
+ - @pnpm/global.packages@1100.0.9
65
+
66
+ ## 1100.0.29
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [302a2f7]
71
+ - Updated dependencies [c112b61]
72
+ - Updated dependencies [3d1fd20]
73
+ - Updated dependencies [0474a9c]
74
+ - Updated dependencies [1c05876]
75
+ - Updated dependencies [3b54d79]
76
+ - @pnpm/config.reader@1101.10.0
77
+ - @pnpm/installing.deps-installer@1102.1.0
78
+ - @pnpm/bins.linker@1100.0.15
79
+ - @pnpm/store.connection-manager@1100.3.1
80
+ - @pnpm/deps.inspection.list@1100.0.19
81
+
82
+ ## 1100.0.28
83
+
84
+ ### Patch Changes
85
+
86
+ - a31faa7: Updated dependency ranges. Notably:
87
+
88
+ - `@pnpm/logger` peer dependency range moved to `^1100.0.0`.
89
+ - `msgpackr` 1.11.8 → 2.0.4 (store index files remain byte-compatible in both directions).
90
+ - `open` ^7.4.2 → ^11.0.0, `memoize` ^10 → ^11, `cli-truncate` ^5 → ^6, `pidtree` ^0.6 → ^1.
91
+ - `@yarnpkg/core` 4.5.0 → 4.8.0, `@rushstack/worker-pool` 0.7.7 → 0.7.18, `@cyclonedx/cyclonedx-library` 10.0.0 → 10.1.0, `@pnpm/config.nerf-dart` ^1 → ^2, `@pnpm/log.group` 3.0.2 → 4.0.1, `@pnpm/util.lex-comparator` ^3 → ^4.
92
+
93
+ - Updated dependencies [f648e9b]
94
+ - Updated dependencies [61810aa]
95
+ - Updated dependencies [74a2dc9]
96
+ - Updated dependencies [c16eb0a]
97
+ - Updated dependencies [681b593]
98
+ - Updated dependencies [a31faa7]
99
+ - Updated dependencies [cd8348c]
100
+ - @pnpm/installing.deps-installer@1102.0.0
101
+ - @pnpm/config.reader@1101.9.0
102
+ - @pnpm/store.connection-manager@1100.3.0
103
+ - @pnpm/bins.linker@1100.0.14
104
+ - @pnpm/types@1101.3.2
105
+ - @pnpm/bins.remover@1100.0.10
106
+ - @pnpm/cli.utils@1101.0.12
107
+ - @pnpm/core-loggers@1100.2.1
108
+ - @pnpm/deps.inspection.list@1100.0.18
109
+ - @pnpm/global.packages@1100.0.8
110
+ - @pnpm/bins.resolver@1100.0.8
111
+ - @pnpm/pkg-manifest.reader@1100.0.8
112
+
113
+ ## 1100.0.27
114
+
115
+ ### Patch Changes
116
+
117
+ - Updated dependencies [bc9ed78]
118
+ - Updated dependencies [f11b4fc]
119
+ - Updated dependencies [615c669]
120
+ - Updated dependencies [84bb4b1]
121
+ - @pnpm/config.reader@1101.8.0
122
+ - @pnpm/core-loggers@1100.2.0
123
+ - @pnpm/installing.deps-installer@1101.9.0
124
+ - @pnpm/store.connection-manager@1100.2.8
125
+ - @pnpm/bins.remover@1100.0.9
126
+ - @pnpm/cli.utils@1101.0.11
127
+ - @pnpm/bins.linker@1100.0.13
128
+ - @pnpm/deps.inspection.list@1100.0.17
129
+
130
+ ## 1100.0.26
131
+
132
+ ### Patch Changes
133
+
134
+ - Updated dependencies [822beb5]
135
+ - Updated dependencies [3537020]
136
+ - Updated dependencies [894ea6a]
137
+ - Updated dependencies [6b5d91a]
138
+ - Updated dependencies [027196b]
139
+ - Updated dependencies [089484a]
140
+ - Updated dependencies [1017c36]
141
+ - Updated dependencies [230df57]
142
+ - Updated dependencies [bf1b731]
143
+ - @pnpm/config.reader@1101.7.0
144
+ - @pnpm/installing.deps-installer@1101.8.0
145
+ - @pnpm/bins.resolver@1100.0.7
146
+ - @pnpm/types@1101.3.1
147
+ - @pnpm/store.connection-manager@1100.2.7
148
+ - @pnpm/bins.linker@1100.0.12
149
+ - @pnpm/bins.remover@1100.0.8
150
+ - @pnpm/global.packages@1100.0.7
151
+ - @pnpm/cli.utils@1101.0.10
152
+ - @pnpm/core-loggers@1100.1.4
153
+ - @pnpm/deps.inspection.list@1100.0.16
154
+ - @pnpm/pkg-manifest.reader@1100.0.7
155
+
156
+ ## 1100.0.25
157
+
158
+ ### Patch Changes
159
+
160
+ - Updated dependencies [e7e99f0]
161
+ - Updated dependencies [5192edf]
162
+ - Updated dependencies [a017bf3]
163
+ - Updated dependencies [f429f93]
164
+ - Updated dependencies [a017bf3]
165
+ - Updated dependencies [a358ee0]
166
+ - Updated dependencies [6d17b66]
167
+ - @pnpm/installing.deps-installer@1101.7.0
168
+ - @pnpm/config.reader@1101.6.0
169
+ - @pnpm/types@1101.3.0
170
+ - @pnpm/store.connection-manager@1100.2.6
171
+ - @pnpm/bins.linker@1100.0.11
172
+ - @pnpm/bins.remover@1100.0.7
173
+ - @pnpm/bins.resolver@1100.0.6
174
+ - @pnpm/cli.utils@1101.0.9
175
+ - @pnpm/core-loggers@1100.1.3
176
+ - @pnpm/deps.inspection.list@1100.0.15
177
+ - @pnpm/global.packages@1100.0.6
178
+ - @pnpm/pkg-manifest.reader@1100.0.6
179
+
180
+ ## 1100.0.24
181
+
182
+ ### Patch Changes
183
+
184
+ - @pnpm/installing.deps-installer@1101.6.1
185
+
186
+ ## 1100.0.23
187
+
188
+ ### Patch Changes
189
+
190
+ - Updated dependencies [a39a83d]
191
+ - Updated dependencies [2cadfb5]
192
+ - Updated dependencies [a33c4bf]
193
+ - @pnpm/config.reader@1101.5.0
194
+ - @pnpm/installing.deps-installer@1101.6.0
195
+ - @pnpm/store.connection-manager@1100.2.5
196
+
197
+ ## 1100.0.22
198
+
199
+ ### Patch Changes
200
+
201
+ - 440e155: Print the global update summary after all isolated global package groups are processed.
202
+ - Updated dependencies [a23956e]
203
+ - Updated dependencies [aa6149d]
204
+ - Updated dependencies [a456dc7]
205
+ - Updated dependencies [35d2355]
206
+ - @pnpm/config.reader@1101.4.1
207
+ - @pnpm/installing.deps-installer@1101.5.0
208
+ - @pnpm/deps.inspection.list@1100.0.14
209
+ - @pnpm/types@1101.2.0
210
+ - @pnpm/store.connection-manager@1100.2.4
211
+ - @pnpm/bins.linker@1100.0.10
212
+ - @pnpm/cli.utils@1101.0.8
213
+ - @pnpm/bins.remover@1100.0.6
214
+ - @pnpm/bins.resolver@1100.0.5
215
+ - @pnpm/core-loggers@1100.1.2
216
+ - @pnpm/global.packages@1100.0.5
217
+ - @pnpm/pkg-manifest.reader@1100.0.5
218
+
219
+ ## 1100.0.21
220
+
221
+ ### Patch Changes
222
+
223
+ - Updated dependencies [3b62f9d]
224
+ - Updated dependencies [212315d]
225
+ - @pnpm/config.reader@1101.4.0
226
+ - @pnpm/installing.deps-installer@1101.4.0
227
+ - @pnpm/bins.linker@1100.0.9
228
+ - @pnpm/cli.utils@1101.0.7
229
+ - @pnpm/deps.inspection.list@1100.0.13
230
+ - @pnpm/store.connection-manager@1100.2.3
231
+
232
+ ## 1100.0.20
233
+
234
+ ### Patch Changes
235
+
236
+ - @pnpm/store.connection-manager@1100.2.2
237
+ - @pnpm/installing.deps-installer@1101.3.1
238
+
239
+ ## 1100.0.19
240
+
241
+ ### Patch Changes
242
+
243
+ - a620557: Fix global add/update to handle minimumReleaseAge policy violations instead of surfacing an internal resolver guardrail error.
244
+ - Updated dependencies [3687b0e]
245
+ - Updated dependencies [ced20cb]
246
+ - Updated dependencies [d1b340f]
247
+ - Updated dependencies [b206a15]
248
+ - Updated dependencies [64afc92]
249
+ - @pnpm/config.reader@1101.3.3
250
+ - @pnpm/installing.deps-installer@1101.3.0
251
+ - @pnpm/types@1101.1.1
252
+ - @pnpm/store.connection-manager@1100.2.1
253
+ - @pnpm/deps.inspection.list@1100.0.12
254
+ - @pnpm/bins.linker@1100.0.8
255
+ - @pnpm/cli.utils@1101.0.6
256
+ - @pnpm/bins.remover@1100.0.5
257
+ - @pnpm/bins.resolver@1100.0.4
258
+ - @pnpm/core-loggers@1100.1.1
259
+ - @pnpm/global.packages@1100.0.4
260
+ - @pnpm/pkg-manifest.reader@1100.0.4
261
+
262
+ ## 1100.0.18
263
+
264
+ ### Patch Changes
265
+
266
+ - Updated dependencies [4195766]
267
+ - Updated dependencies [31538bf]
268
+ - Updated dependencies [020ac45]
269
+ - Updated dependencies [d3f8408]
270
+ - Updated dependencies [3ddde2b]
271
+ - Updated dependencies [4a79336]
272
+ - Updated dependencies [a62f959]
273
+ - Updated dependencies [ba2c884]
274
+ - Updated dependencies [2a9bd89]
275
+ - Updated dependencies [31538bf]
276
+ - Updated dependencies [8df408c]
277
+ - @pnpm/installing.deps-installer@1101.2.0
278
+ - @pnpm/store.connection-manager@1100.2.0
279
+ - @pnpm/config.reader@1101.3.2
280
+ - @pnpm/core-loggers@1100.1.0
281
+ - @pnpm/deps.inspection.list@1100.0.11
282
+ - @pnpm/bins.remover@1100.0.4
283
+ - @pnpm/cli.utils@1101.0.5
284
+ - @pnpm/bins.linker@1100.0.7
285
+
286
+ ## 1100.0.17
287
+
288
+ ### Patch Changes
289
+
290
+ - Updated dependencies [50b33c1]
291
+ - Updated dependencies [8c06d1a]
292
+ - @pnpm/installing.deps-installer@1101.1.2
293
+ - @pnpm/deps.inspection.list@1100.0.10
294
+ - @pnpm/bins.linker@1100.0.6
295
+ - @pnpm/cli.utils@1101.0.4
296
+ - @pnpm/config.reader@1101.3.1
297
+ - @pnpm/store.connection-manager@1100.1.2
298
+
299
+ ## 1100.0.16
300
+
301
+ ### Patch Changes
302
+
303
+ - Updated dependencies [b4f8f47]
304
+ - @pnpm/bins.linker@1100.0.5
305
+ - @pnpm/installing.deps-installer@1101.1.1
306
+ - @pnpm/store.connection-manager@1100.1.1
307
+
308
+ ## 1100.0.15
309
+
310
+ ### Patch Changes
311
+
312
+ - 4b25a3d: `pnpm add -g` now installs each space-separated package into its own isolated directory by default. To bundle multiple packages into the same isolated install (so that they share dependencies and are removed together), pass them as a comma-separated list. For example:
313
+
314
+ - `pnpm add -g foo bar` installs `foo` and `bar` as two independent globals — removing one does not affect the other.
315
+ - `pnpm add -g foo,bar qar` bundles `foo` and `bar` into a single isolated install while `qar` is installed on its own.
316
+
317
+ Related: [#11587](https://github.com/pnpm/pnpm/issues/11587).
318
+
319
+ - Updated dependencies [4b25a3d]
320
+ - Updated dependencies [b61e268]
321
+ - Updated dependencies [e1e29c1]
322
+ - @pnpm/installing.deps-installer@1101.1.0
323
+ - @pnpm/config.reader@1101.3.0
324
+ - @pnpm/store.connection-manager@1100.1.0
325
+ - @pnpm/types@1101.1.0
326
+ - @pnpm/bins.linker@1100.0.4
327
+ - @pnpm/bins.remover@1100.0.3
328
+ - @pnpm/bins.resolver@1100.0.3
329
+ - @pnpm/cli.utils@1101.0.3
330
+ - @pnpm/core-loggers@1100.0.2
331
+ - @pnpm/deps.inspection.list@1100.0.9
332
+ - @pnpm/global.packages@1100.0.3
333
+ - @pnpm/pkg-manifest.reader@1100.0.3
334
+
335
+ ## 1100.0.14
336
+
337
+ ### Patch Changes
338
+
339
+ - Updated dependencies [e9e876c]
340
+ - @pnpm/config.reader@1101.2.2
341
+ - @pnpm/installing.deps-installer@1101.0.9
342
+ - @pnpm/store.connection-manager@1100.0.13
343
+ - @pnpm/deps.inspection.list@1100.0.8
344
+
345
+ ## 1100.0.13
346
+
347
+ ### Patch Changes
348
+
349
+ - @pnpm/installing.deps-installer@1101.0.8
350
+ - @pnpm/deps.inspection.list@1100.0.7
351
+ - @pnpm/store.connection-manager@1100.0.12
352
+
353
+ ## 1100.0.12
354
+
355
+ ### Patch Changes
356
+
357
+ - Updated dependencies [12313f1]
358
+ - Updated dependencies [27425d7]
359
+ - Updated dependencies [707a879]
360
+ - @pnpm/installing.deps-installer@1101.0.7
361
+ - @pnpm/config.reader@1101.2.1
362
+ - @pnpm/deps.inspection.list@1100.0.6
363
+ - @pnpm/store.connection-manager@1100.0.11
364
+
365
+ ## 1100.0.11
366
+
367
+ ### Patch Changes
368
+
369
+ - Updated dependencies [8fdd9a9]
370
+ - Updated dependencies [5f34a8d]
371
+ - Updated dependencies [c969392]
372
+ - Updated dependencies [ab6c42d]
373
+ - Updated dependencies [817b1b4]
374
+ - Updated dependencies [c969392]
375
+ - Updated dependencies [2de318b]
376
+ - @pnpm/config.reader@1101.2.0
377
+ - @pnpm/installing.deps-installer@1101.0.6
378
+ - @pnpm/store.connection-manager@1100.0.10
379
+
380
+ ## 1100.0.10
381
+
382
+ ### Patch Changes
383
+
384
+ - 72629fc: Fix `pnpm -g ls --json` and `pnpm -g ls --parseable` so they emit valid JSON and parseable output respectively, matching pnpm 10 behavior. Since the isolated global packages refactor in pnpm 11, the global list command had a custom path that always printed plain text and ignored `--json`/`--parseable`, which broke tools like `npm-check-updates` that parse the JSON output [#11440](https://github.com/pnpm/pnpm/issues/11440).
385
+
386
+ `pnpm -g ls --depth=<n>` (with n > 0) now errors when more than one isolated global install would be involved, since each install has its own lockfile and merging their transitive trees would be incoherent. When the request can be narrowed to a single install group, the regular `list` flow is used and the full dependency tree is shown.
387
+
388
+ ## 1100.0.9
389
+
390
+ ### Patch Changes
391
+
392
+ - Updated dependencies [42a8f29]
393
+ - @pnpm/config.reader@1101.1.4
394
+ - @pnpm/store.connection-manager@1100.0.9
395
+ - @pnpm/installing.deps-installer@1101.0.5
396
+
397
+ ## 1100.0.8
398
+
399
+ ### Patch Changes
400
+
401
+ - Updated dependencies [184ce26]
402
+ - @pnpm/installing.deps-installer@1101.0.4
403
+ - @pnpm/store.connection-manager@1100.0.8
404
+ - @pnpm/pkg-manifest.reader@1100.0.2
405
+ - @pnpm/config.matcher@1100.0.1
406
+ - @pnpm/bins.resolver@1100.0.2
407
+ - @pnpm/config.reader@1101.1.3
408
+ - @pnpm/bins.remover@1100.0.2
409
+ - @pnpm/bins.linker@1100.0.3
410
+ - @pnpm/cli.command@1100.0.1
411
+ - @pnpm/cli.utils@1101.0.2
412
+ - @pnpm/global.packages@1100.0.2
413
+
414
+ ## 1100.0.7
415
+
416
+ ### Patch Changes
417
+
418
+ - 685a369: Fix `ENOENT` symlink failure when `pnpm add -g` triggers the approve-builds prompt. The global add flow used to forward an absolute `modulesDir` (`<installDir>/node_modules`) into the install run by `approve-builds`. The install layer treated `modulesDir` as a path relative to `lockfileDir` and joined it again, producing a doubled path on Windows because `path.join` does not collapse an embedded absolute path. The hoist step then tried to `mkdir` and symlink under `<installDir>\<installDir>\node_modules\.pnpm\node_modules\...` and failed with `ENOENT` [#11403](https://github.com/pnpm/pnpm/issues/11403).
419
+ - @pnpm/cli.utils@1101.0.1
420
+ - @pnpm/installing.deps-installer@1101.0.3
421
+ - @pnpm/store.connection-manager@1100.0.7
422
+
423
+ ## 1100.0.6
424
+
425
+ ### Patch Changes
426
+
427
+ - Updated dependencies [0fbcf74]
428
+ - @pnpm/config.reader@1101.1.2
429
+ - @pnpm/store.connection-manager@1100.0.6
430
+ - @pnpm/installing.deps-installer@1101.0.2
431
+
432
+ ## 1100.0.5
433
+
434
+ ### Patch Changes
435
+
436
+ - Updated dependencies [005eeb7]
437
+ - @pnpm/installing.deps-installer@1101.0.1
438
+ - @pnpm/store.connection-manager@1100.0.5
439
+
440
+ ## 1100.0.4
441
+
442
+ ### Patch Changes
443
+
444
+ - @pnpm/installing.deps-installer@1101.0.0
445
+ - @pnpm/store.connection-manager@1100.0.4
446
+ - @pnpm/config.reader@1101.1.1
447
+
448
+ ## 1100.0.3
449
+
450
+ ### Patch Changes
451
+
452
+ - Updated dependencies [7d25bc1]
453
+ - Updated dependencies [72c1e05]
454
+ - Updated dependencies [9e0833c]
455
+ - @pnpm/config.reader@1101.1.0
456
+ - @pnpm/installing.deps-installer@1100.0.3
457
+ - @pnpm/store.connection-manager@1100.0.3
458
+
459
+ ## 1100.0.2
460
+
461
+ ### Patch Changes
462
+
463
+ - Updated dependencies [cee550a]
464
+ - Updated dependencies [4ab3d9b]
465
+ - Updated dependencies [9af708a]
466
+ - Updated dependencies [ea2a7fb]
467
+ - Updated dependencies [ff7733c]
468
+ - @pnpm/cli.utils@1101.0.0
469
+ - @pnpm/config.reader@1101.0.0
470
+ - @pnpm/store.connection-manager@1100.0.2
471
+ - @pnpm/bins.linker@1100.0.2
472
+ - @pnpm/installing.deps-installer@1100.0.2
473
+
474
+ ## 1100.0.1
475
+
476
+ ### Patch Changes
477
+
478
+ - Updated dependencies [ff28085]
479
+ - @pnpm/types@1101.0.0
480
+ - @pnpm/bins.linker@1100.0.1
481
+ - @pnpm/bins.remover@1100.0.1
482
+ - @pnpm/bins.resolver@1100.0.1
483
+ - @pnpm/cli.utils@1100.0.1
484
+ - @pnpm/config.reader@1100.0.1
485
+ - @pnpm/global.packages@1100.0.1
486
+ - @pnpm/installing.deps-installer@1100.0.1
487
+ - @pnpm/pkg-manifest.reader@1100.0.1
488
+ - @pnpm/store.connection-manager@1100.0.1
489
+
490
+ ## 1000.0.0
491
+
492
+ ### Minor Changes
493
+
494
+ - fd511e4: Isolated global packages. 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, hoisting changes, or version resolution shifts.
495
+
496
+ Key changes:
497
+
498
+ - `pnpm add -g <pkg>` creates an isolated installation in `{pnpmHomeDir}/global/v11/{hash}/`
499
+ - `pnpm remove -g <pkg>` removes the entire installation group containing the package
500
+ - `pnpm update -g [pkg]` re-installs packages in new isolated directories
501
+ - `pnpm list -g` scans isolated directories to show all installed global packages
502
+ - `pnpm install -g` (no args) is no longer supported; use `pnpm add -g <pkg>` instead
503
+
504
+ ### Patch Changes
505
+
506
+ - Updated dependencies [7730a7f]
507
+ - Updated dependencies [5f73b0f]
508
+ - Updated dependencies [449dacf]
509
+ - Updated dependencies [996284f]
510
+ - Updated dependencies [ae8b816]
511
+ - Updated dependencies [facdd71]
512
+ - Updated dependencies [9b0a460]
513
+ - Updated dependencies [3c72b6b]
514
+ - Updated dependencies [9f5c0e3]
515
+ - Updated dependencies [76718b3]
516
+ - Updated dependencies [a8f016c]
517
+ - Updated dependencies [cc1b8e3]
518
+ - Updated dependencies [90bd3c3]
519
+ - Updated dependencies [1cc61e8]
520
+ - Updated dependencies [606f53e]
521
+ - Updated dependencies [c7203b9]
522
+ - Updated dependencies [bb17724]
523
+ - Updated dependencies [05fb1ae]
524
+ - Updated dependencies [da2429d]
525
+ - Updated dependencies [1cc61e8]
526
+ - Updated dependencies [491a84f]
527
+ - Updated dependencies [9b801c8]
528
+ - Updated dependencies [13855ac]
529
+ - Updated dependencies [62f760e]
530
+ - Updated dependencies [f0ae1b9]
531
+ - Updated dependencies [9fc552d]
532
+ - Updated dependencies [394d88c]
533
+ - Updated dependencies [6e9cad3]
534
+ - Updated dependencies [672e58c]
535
+ - Updated dependencies [312226c]
536
+ - Updated dependencies [cb228c9]
537
+ - Updated dependencies [2fc9139]
538
+ - Updated dependencies [7fab2a2]
539
+ - Updated dependencies [cb367b9]
540
+ - Updated dependencies [543c7e4]
541
+ - Updated dependencies [075aa99]
542
+ - Updated dependencies [fd511e4]
543
+ - Updated dependencies [ae43ac7]
544
+ - Updated dependencies [d7b8be4]
545
+ - Updated dependencies [ccec8e7]
546
+ - Updated dependencies [ba065f6]
547
+ - Updated dependencies [4158906]
548
+ - Updated dependencies [ac944ef]
549
+ - Updated dependencies [7d2fd48]
550
+ - Updated dependencies [cc7c0d2]
551
+ - Updated dependencies [efb48dc]
552
+ - Updated dependencies [d5d4eed]
553
+ - Updated dependencies [095f659]
554
+ - Updated dependencies [96704a1]
555
+ - Updated dependencies [cb367b9]
556
+ - Updated dependencies [7b1c189]
557
+ - Updated dependencies [51b04c3]
558
+ - Updated dependencies [69ebe38]
559
+ - Updated dependencies [d01b81f]
560
+ - Updated dependencies [3ed41f4]
561
+ - Updated dependencies [8ffb1a7]
562
+ - Updated dependencies [05fb1ae]
563
+ - Updated dependencies [f40177f]
564
+ - Updated dependencies [05158d2]
565
+ - Updated dependencies [71de2b3]
566
+ - Updated dependencies [10bc391]
567
+ - Updated dependencies [38b8e35]
568
+ - Updated dependencies [831f574]
569
+ - Updated dependencies [2df8b71]
570
+ - Updated dependencies [ed1a7fe]
571
+ - Updated dependencies [15549a9]
572
+ - Updated dependencies [cc7c0d2]
573
+ - Updated dependencies [5bf7768]
574
+ - Updated dependencies [ae43ac7]
575
+ - Updated dependencies [a5fdbf9]
576
+ - Updated dependencies [9d3f00b]
577
+ - Updated dependencies [efb48dc]
578
+ - Updated dependencies [9587dac]
579
+ - Updated dependencies [09a999a]
580
+ - Updated dependencies [559f903]
581
+ - Updated dependencies [41dc031]
582
+ - Updated dependencies [3574905]
583
+ - Updated dependencies [4362c06]
584
+ - @pnpm/config.reader@1005.0.0
585
+ - @pnpm/installing.deps-installer@1013.0.0
586
+ - @pnpm/bins.resolver@1001.0.0
587
+ - @pnpm/bins.linker@1001.0.0
588
+ - @pnpm/types@1001.0.0
589
+ - @pnpm/cli.utils@1002.0.0
590
+ - @pnpm/pkg-manifest.reader@1001.0.0
591
+ - @pnpm/store.connection-manager@1003.0.0
592
+ - @pnpm/bins.remover@1001.0.0
593
+ - @pnpm/config.matcher@1001.0.0
594
+ - @pnpm/error@1001.0.0
595
+ - @pnpm/cli.command@1001.0.0
596
+ - @pnpm/global.packages@1000.0.0
@@ -1,4 +1,5 @@
1
1
  import type { CommandHandlerMap } from '@pnpm/cli.command';
2
+ import { type GlobalPackageInfo } from '@pnpm/global.packages';
2
3
  import type { CreateStoreControllerOptions } from '@pnpm/store.connection-manager';
3
4
  import { type ResolutionPolicyViolation } from './installGlobalPackages.js';
4
5
  export type GlobalAddOptions = CreateStoreControllerOptions & {
@@ -17,3 +18,5 @@ export type GlobalAddOptions = CreateStoreControllerOptions & {
17
18
  updateResolutionPolicyManifest?: (violations: readonly ResolutionPolicyViolation[], dir: string) => Promise<void>;
18
19
  };
19
20
  export declare function handleGlobalAdd(opts: GlobalAddOptions, params: string[], commands: CommandHandlerMap): Promise<void>;
21
+ export declare function getReplacementAliases(aliases: string[]): string[];
22
+ export declare function shouldReplaceExistingGlobalInstall(pkg: GlobalPackageInfo, aliases: string[], replacementAliases: string[]): boolean;
package/lib/globalAdd.js CHANGED
@@ -88,6 +88,7 @@ async function installGroup(ctx, commands) {
88
88
  // Read resolved aliases from the installed package.json
89
89
  const pkgJson = readPackageJsonFromDirRawSync(installDir);
90
90
  const aliases = Object.keys(pkgJson.dependencies ?? {});
91
+ const replacementAliases = getReplacementAliases(aliases);
91
92
  // Check for bin name conflicts with other global packages
92
93
  // (must happen before removeExistingGlobalInstalls so we don't lose existing packages on failure)
93
94
  const pkgs = await readInstalledPackages(installDir);
@@ -97,7 +98,7 @@ async function installGroup(ctx, commands) {
97
98
  globalDir,
98
99
  globalBinDir,
99
100
  newPkgs: pkgs,
100
- shouldSkip: (pkg) => aliases.some((alias) => alias in pkg.dependencies),
101
+ shouldSkip: (pkg) => shouldReplaceExistingGlobalInstall(pkg, aliases, replacementAliases),
101
102
  });
102
103
  }
103
104
  catch (err) {
@@ -105,7 +106,7 @@ async function installGroup(ctx, commands) {
105
106
  throw err;
106
107
  }
107
108
  // Remove any existing global installations of these aliases
108
- await removeExistingGlobalInstalls(globalDir, globalBinDir, aliases);
109
+ await removeExistingGlobalInstalls({ globalDir, globalBinDir, aliases, replacementAliases });
109
110
  // Compute cache key and create hash symlink pointing to install dir
110
111
  const cacheHash = createGlobalCacheKey({
111
112
  aliases,
@@ -117,6 +118,21 @@ async function installGroup(ctx, commands) {
117
118
  await linkBinsOfPackages(pkgs, globalBinDir, { excludeBins: binsToSkip });
118
119
  await opts.updateResolutionPolicyManifest?.(resolutionPolicyViolations, globalDir);
119
120
  }
121
+ const PNPM_CLI_PACKAGE_ALIASES = ['pnpm', '@pnpm/exe'];
122
+ export function getReplacementAliases(aliases) {
123
+ if (!aliases.some((alias) => PNPM_CLI_PACKAGE_ALIASES.includes(alias)))
124
+ return aliases;
125
+ return [...new Set([...aliases, ...PNPM_CLI_PACKAGE_ALIASES])];
126
+ }
127
+ export function shouldReplaceExistingGlobalInstall(pkg, aliases, replacementAliases) {
128
+ if (aliases.some((alias) => alias in pkg.dependencies))
129
+ return true;
130
+ return isPnpmCliOnlyGroup(pkg) && replacementAliases.some((alias) => alias in pkg.dependencies);
131
+ }
132
+ function isPnpmCliOnlyGroup(pkg) {
133
+ const aliases = Object.keys(pkg.dependencies);
134
+ return aliases.length > 0 && aliases.every((alias) => PNPM_CLI_PACKAGE_ALIASES.includes(alias));
135
+ }
120
136
  function splitCommaSeparated(param, baseDir) {
121
137
  if (!param.includes(','))
122
138
  return [param];
@@ -173,12 +189,15 @@ function resolveLocalParam(param, baseDir) {
173
189
  }
174
190
  return param;
175
191
  }
176
- async function removeExistingGlobalInstalls(globalDir, globalBinDir, aliases) {
192
+ async function removeExistingGlobalInstalls(opts) {
193
+ const { globalDir, globalBinDir, aliases, replacementAliases } = opts;
177
194
  // Collect unique groups to remove (dedup by hash)
178
195
  const groupsToRemove = new Map();
179
- for (const alias of aliases) {
196
+ for (const alias of replacementAliases) {
180
197
  const existing = findGlobalPackage(globalDir, alias);
181
- if (existing && !groupsToRemove.has(existing.hash)) {
198
+ if (existing &&
199
+ shouldReplaceExistingGlobalInstall(existing, aliases, replacementAliases) &&
200
+ !groupsToRemove.has(existing.hash)) {
182
201
  groupsToRemove.set(existing.hash, getInstalledBinNames(existing));
183
202
  }
184
203
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/global.commands",
3
- "version": "1100.0.31",
3
+ "version": "1100.0.33",
4
4
  "description": "Global package command handlers for pnpm",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -28,28 +28,28 @@
28
28
  "!*.map"
29
29
  ],
30
30
  "dependencies": {
31
- "@pnpm/util.lex-comparator": "^4.0.1",
32
- "is-subdir": "^2.0.0",
33
- "symlink-dir": "^10.0.1",
34
- "@pnpm/bins.remover": "1100.0.12",
35
31
  "@pnpm/bins.linker": "1100.0.16",
32
+ "@pnpm/bins.remover": "1100.0.12",
36
33
  "@pnpm/bins.resolver": "1100.0.8",
37
34
  "@pnpm/cli.command": "1100.0.1",
38
35
  "@pnpm/cli.utils": "1101.0.13",
39
36
  "@pnpm/config.matcher": "1100.0.1",
40
- "@pnpm/config.reader": "1101.11.0",
37
+ "@pnpm/config.reader": "1101.11.2",
41
38
  "@pnpm/core-loggers": "1100.2.1",
39
+ "@pnpm/deps.inspection.list": "1100.0.23",
42
40
  "@pnpm/error": "1100.0.1",
43
41
  "@pnpm/global.packages": "1100.0.10",
44
- "@pnpm/deps.inspection.list": "1100.0.21",
45
- "@pnpm/installing.deps-installer": "1102.2.0",
46
- "@pnpm/store.connection-manager": "1100.3.3",
42
+ "@pnpm/installing.deps-installer": "1102.2.2",
47
43
  "@pnpm/pkg-manifest.reader": "1100.0.9",
48
- "@pnpm/types": "1101.3.2"
44
+ "@pnpm/store.connection-manager": "1100.3.5",
45
+ "@pnpm/types": "1101.3.2",
46
+ "@pnpm/util.lex-comparator": "^4.0.1",
47
+ "is-subdir": "^2.0.0",
48
+ "symlink-dir": "^10.0.1"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@jest/globals": "30.4.1",
52
- "@pnpm/global.commands": "1100.0.31"
52
+ "@pnpm/global.commands": "1100.0.33"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">=22.13"