UNPKG

39 kBMarkdownView Raw
1# pnpm
2
3## 6.0.1
4
5### Bug Fixes
6
7- Use `+` instead of `#` in directory names inside the virtual store directory (`node_modules/.pnpm`). `#` causes issues with Webpack and Vite [#3314](https://github.com/pnpm/pnpm/pull/3314).
8
9## 6.0.0
10
11### Major Changes
12
13- Node.js v10 support is dropped. At least Node.js v12.17 is required for the package to work.
14
15- Arbitrary pre/post hooks for user-defined scripts (such as `prestart`) are not executed automatically.
16
17- The lockfile version is bumped to v5.3. Changes in the new format:
18
19 - Blank lines added between package/project entries to improve readability and decrease merge issues.
20 - The `resolution`, `engines`, `os`, and `cpu` fields are now always written in a single lines, as the first keys of the package objects.
21 - A new field is added to the package objects: `transitivePeerDependencies`.
22
23- The layout of the virtual store directory has changed (`node_modules/.pnpm`) to allow keeping cache in it:
24
25 - All packages inside the virtual store directory are on the same depth. Instead of subdirectories, one directory is used with `#` instead of slashes.
26 - New setting added: `modules-cache-max-age`. The default value of the setting is 10080 (7 days in minutes). `modules-cache-max-age` is the time in minutes after which pnpm should remove the orphan packages from `node_modules`.
27
28- pnpx does not automatically install packages. A prompt asks the user if a package should be installed, if it is not present.
29
30 `pnpx --yes` tells pnpx to install any missing package.
31
32 `pnpx --no` makes pnpx fail if the called packages is not installed.
33
34- `pnpmfile.js` renamed to `.pnpmfile.cjs` in order to force CommonJS.
35
36- `.pnp.js` renamed to `.pnp.cjs` in order to force CommonJS.
37
38- The `pnpm-prefix` setting is removed. Use `global-dir` to specify a custom location for the globally installed packages.
39
40- The default depth of an update is `Infinity`, not `0`.
41
42- The `--global` option should be used when linking from/to the global modules directory.
43
44 Linking a package to the global directory:
45
46 - pnpm v5: `pnpm link`
47 - pnpm v6: `pnpm link --global`
48
49 Linking a package from the global directory:
50
51 - pnpm v5: `pnpm link foo`
52 - pnpm v6: `pnpm link --global foo`
53
54- pnpm's command file's extension changed to `.cjs` (`bin/pnpm.js`=>`bin/pnpm.cjs`).
55
56- [node-gyp](https://github.com/nodejs/node-gyp) updated to v8.
57
58- `prepublish` is not executed on a local `pnpm install`. Use `prepare` instead.
59
60### Minor Changes
61
62- A new command added: [pnpm fetch](https://pnpm.io/cli/fetch).
63
64 Fetch packages from a lockfile into virtual store, package manifest is ignored.
65 This command is specifically designed to boost building a docker image.
66
67- Overrides match dependencies by checking if the target range is a subset of the specified range, instead of making an exact match.
68
69 For example, the following override will replace any version of `foo` that has a subrange on v2:
70
71 ```json
72 "pnpm": {
73 "overrides": {
74 "foo@2": "2.1.0"
75 }
76 }
77 ```
78
79 This will override `foo@2.2.0` and `foo@^2.3.0` to `foo@2.1.0` as both `2.2.0` and `^2.3.0` are subranges of `2`.
80
81## 5.18.9
82
83### Patch Changes
84
85- `pnpm store status` should look for the `integrity.json` file at the right place ([#2597](https://github.com/pnpm/pnpm/issues/2597)).
86- Allow `--https-proxy`, `--proxy`, and `--noproxy` CLI options with the `install`, `add`, `update` commands ([#3274](https://github.com/pnpm/pnpm/issues/3274)).
87
88## 5.18.8
89
90### Patch Changes
91
92- Installation of packages that have bin directories with subdirectories should not fail ([#3263](https://github.com/pnpm/pnpm/issues/3263)).
93- The value of the `noproxy` setting should be read ([#3258](https://github.com/pnpm/pnpm/issues/3258)).
94- An empty `node_modules` directory should not be created just to save a `.pnpm-debug.log` file to it.
95
96## 5.18.7
97
98### Patch Changes
99
100- Proxying through `socks://` should work ([#3241](https://github.com/pnpm/pnpm/issues/3241)).
101- Non-directories should not be added to `NODE_PATH` in command shims ([#3156](https://github.com/pnpm/pnpm/issues/3156)).
102
103## 5.18.6
104
105### Patch Changes
106
107- Escape invalid charachters in file names, when linking packages from the store ([#3232](https://github.com/pnpm/pnpm/pull/3232)).
108- Link to the compatibility page fixed.
109
110## 5.18.5
111
112### Patch Changes
113
114- Verify the name and version of the package before linking it from the store ([PR #3224](https://github.com/pnpm/pnpm/pull/3224), [issue #3188](https://github.com/pnpm/pnpm/issues/3188)).
115- The lockfile should be autofixed if it contains broken integrity checksums ([PR #3228](https://github.com/pnpm/pnpm/pull/3228), [issue #3137](https://github.com/pnpm/pnpm/issues/3137)).
116
117## 5.18.4
118
119### Patch Changes
120
121- Links to docs updated. The docs now lead to the versioned `5.x` docs, not the current ones.
122- The command prompts should work when selecting shell target in `pnpm install-completion` [#3221](https://github.com/pnpm/pnpm/issues/3221).
123
124## 5.18.3
125
126### Patch Changes
127
128- Broken lockfiles are ignore unless `pnpm install --frozen-lockfile` is used [#1395](https://github.com/pnpm/pnpm/issues/1395).
129- Fixed occasional "Too many open file" error on `pnpm store status` [#3185](https://github.com/pnpm/pnpm/issues/3185).
130
131## 5.18.2
132
133### Patch Changes
134
135- `pnpm audit` should work with the `--no-optional`, `--dev`, and `--prod` options [#3152](https://github.com/pnpm/pnpm/issues/3152).
136
137## 5.18.1
138
139### Patch Changes
140
141- The ID of a tarball dependency should not contain colons, when the URL has a port. The colon should be escaped with a plus sign[#3182](https://github.com/pnpm/pnpm/issues/3182).
142
143## 5.18.0
144
145### Minor Changes
146
147- `pnpm publish -r --force` should try to publish packages even if their current version is already in the registry.
148
149## 5.17.3
150
151### Patch Changes
152
153- Turn off warnings about settings.
154- The `-P/-D` shorthand options should work with the `pnpm why` command.
155- `pnpm add --global pnpm` does not create PowerShell command shims for the pnpm CLI.
156
157## 5.17.2
158
159### Patch Changes
160
161- Only display unknown settings warning, when `pnpm install` is executed [#3130](https://github.com/pnpm/pnpm/pull/3130).
162- Update help for the filter option. Some of the filtering patterns should be escaped in Zsh.
163- Audit output should always have a new line at the end [#3134](https://github.com/pnpm/pnpm/pull/3134).
164- Return the correct registry for an aliased scoped dependency [#3103](https://github.com/pnpm/pnpm/pull/3134).
165
166## 5.17.1
167
168### Minor Changes
169
170- New '--reverse' CLI option added for reversing the order of package executions during `pnpm -r run` [#2985](https://github.com/pnpm/pnpm/issues/2985).
171
172## 5.16.1
173
174### Patch Changes
175
176- Remove redundant empty lines when run `pnpm why --parseable` [#3101](https://github.com/pnpm/pnpm/pull/3101).
177- `pnpm publish --publish-branch=<branch>` does not fail [#2996](https://github.com/pnpm/pnpm/issues/2996).
178- Don't print warnings when `.npmrc` contains empty lines with whitespaces [#3105](https://github.com/pnpm/pnpm/pull/3105).
179
180## 5.16.0
181
182### Minor Changes
183
184- Allow to ignore the builds of specific dependencies [#3080](https://github.com/pnpm/pnpm/pull/3080).
185
186 The list of dependencies that should never be built, is specified through the `pnpm.neverBuiltDependencies` of `package.json`. For instance:
187
188 ```json
189 {
190 "pnpm": {
191 "neverBuiltDependencies": ["fsevents", "level"]
192 }
193 }
194 ```
195
196- Print warnings if unknown settings are found in `.npmrc` [#3074](https://github.com/pnpm/pnpm/pull/3074).
197
198- pnpm can now be executed using its single bundled CLI file [#3096](https://github.com/pnpm/pnpm/pull/3096).
199
200- When pnpm crashes because the Node.js version is unsupported, the error message will now contain a link to the compatibility page of the pnpm documentation website.
201
202- `pnpm pubish -r` prints an info message if there are no pending packages to be published.
203
204## 5.15.3
205
206### Patch Changes
207
208- A failing optional dependency should not cause a crash of headless installation [#3090](https://github.com/pnpm/pnpm/issues/3090).
209- `npx pnpm install --global pnpm` should not install pnpm to the temporary directory of npx [#2873](https://github.com/pnpm/pnpm/issues/2873).
210
211## 5.15.2
212
213### Patch Changes
214
215- The lockfile's content should not "flicker" if some dependency's version is specified with build metadata [#2928](https://github.com/pnpm/pnpm/issues/2928).
216- If `pnpm.overrides` were modified, the resolution stage may never be skipped [#3079](https://github.com/pnpm/pnpm/pull/3079).
217- The `pnpm` section of options is not included in the published version of a `package.json` [#3081](https://github.com/pnpm/pnpm/pull/3081).
218- Fix the error message that happens when trying to add a new dependency to the root of a workspace [#3082](https://github.com/pnpm/pnpm/pull/3082).
219
220## 5.15.1
221
222### Patch Changes
223
224- Finding the global directory location should not fail when one of the possible locations is in a read-only filesystem [#2794](https://github.com/pnpm/pnpm/issues/2794).
225
226- Don't ask for confirmation, when publishing happens on a branch name `"main"` [#2995](https://github.com/pnpm/pnpm/issues/2995).
227
228- Highlight the project names in the output of the `pnpm list` command [#3024](https://github.com/pnpm/pnpm/issues/3024).
229
230- It should be possible to use the workspace protocol with version specs inside `pnpm.overrides` [#3029](https://github.com/pnpm/pnpm/issues/3029).
231
232 For instance:
233
234 ```json
235 {
236 "pnpm": {
237 "overrides": {
238 "foo": "workspace:*"
239 }
240 }
241 }
242 ```
243
244## 5.15.0
245
246### Minor Changes
247
248- Allow to specify the shell target when configuring autocompletion with `pnpm install-completion`. For instance: `pnpm install-completion zsh`.
249- New option added: `enable-modules-dir`. When `false`, pnpm will not write any files to the modules directory (node_modules). This is useful for when the modules directory is mounted with filesystem in userspace (FUSE). There is an experimental CLI that allows to mount a modules directory with FUSE: [@pnpm/mount-modules](https://www.npmjs.com/package/@pnpm/mount-modules).
250
251### Patch Changes
252
253- Fixed a performance regression that was caused by [#3032](https://github.com/pnpm/pnpm/pull/3032) and shipped in pnpm v5.13.7
254
255 The performance of repeat `pnpm install` execution was in some cases significantly slower.
256
257- Don't create broken symlinks to skipped optional dependencies, when hoisting. This issue was already fixed in pnpm v5.13.7 for the case when the lockfile is up-to-date. This fixes the same issue for cases when the lockfile needs updates. For instance, when adding a new package.
258
259## 5.14.3
260
261### Patch Changes
262
263- Fixed an issue with installing peer dependencies. In some rare cases, when installing a new peer dependency, the other existing dependencies were removed [#3057](https://github.com/pnpm/pnpm/pull/3057)
264
265## 5.14.2
266
267### Patch Changes
268
269- Linking dependencies by absolute path should work. For instance: `pnpm link C:\src\foo` [#3025](https://github.com/pnpm/pnpm/issues/3025)
270
271## 5.14.1
272
273### Minor Changes
274
275- New option added: `test-pattern`. `test-pattern` allows to detect whether the modified files are related to tests. If they are, the dependent packages of such modified packages are not included.
276
277 This option is useful with the "changed since" filter. For instance, the next command will run tests in all changed packages, and if the changes are in source code of the package, tests will run in the dependent packages as well:
278
279 ```
280 pnpm --filter=...[origin/master] --test-pattern=test/* test
281 ```
282
283- An exception is thrown if the workspace manifest is created with the wrong extension: `pnpm-workspace.yml` instead of `pnpm-workspace.yaml`.
284
285### Patch Changes
286
287- `--no-bail` should work with non-recursive commands [#3036](https://github.com/pnpm/pnpm/issues/3036).
288
289## 5.13.7
290
291### Patch Changes
292
293- Broken symlinks are not created to skipped optional dependencies, when hoisting.
294
295## 5.13.6
296
297### Patch Changes
298
299- Regression in `pnpm install-completion` fixed.
300- Throw a meaningful error on malformed registry metadata.
301
302## 5.13.5
303
304### Patch Changes
305
306- Include dependencies of dependents, when using `--filter ...pkg...` [#2917](https://github.com/pnpm/pnpm/issues/2917).
307- Fix hanging requests issue. The number of max open sockets increased [#2998](https://github.com/pnpm/pnpm/pull/2998).
308
309## 5.13.4
310
311### Patch Changes
312
313- Issue with Homebrew fixed [#2993]https://github.com/pnpm/pnpm/issues/2993).
314
315## 5.13.3
316
317- Fix regression with node-gyp that was introduced in v5.13.2 [#2988](https://github.com/pnpm/pnpm/issues/2988).
318
319## 5.13.2
320
321### Patch Changes
322
323- The pnpm CLI is bundled for faster startup.
324
325## 5.13.1
326
327### Patch Changes
328
329- pnpm should not leave empty temporary directories in the root of the partition [#2749](https://github.com/pnpm/pnpm/issues/2749).
330
331## 5.13.0
332
333### Minor Changes
334
335- New setting added: `prefer-workspace-packages` [#2136](https://github.com/pnpm/pnpm/issues/2136).
336
337 When `prefer-workspace-packages` is set to `true`, local packages from the workspace are preferred over
338 packages from the registry, even if there is a newer version of that package in the registry.
339
340 This setting is only useful if the workspace doesn't use `save-workspace-protocol=true`.
341
342## 5.11.2
343
344### Minor Changes
345
346- Workspace packages now can be referenced through aliases [#2970](https://github.com/pnpm/pnpm/issues/2970).
347
348 For instance, the package in the workspace may be named `foo`. Usually, you would reference it as `{ "foo": "workspace:*" }`.
349 If you want to use a different alias, the next syntax will work now: `{ "bar": "workspace:foo@*" }`.
350
351 Before publish, aliases are converted to regular aliased dependencies. The above example will become: `{ "bar": "npm:foo@1.0.0" }`.
352
353- Workspace packages now can be referenced through relative path [#2959](https://github.com/pnpm/pnpm/issues/2959).
354
355 For example, in a workspace with 2 packages:
356
357 ```
358 + packages
359 + foo
360 + bar
361 ```
362
363 `bar` may have `foo` in its dependencies declared as `{ "foo": "workspace:../foo" }`. Before publish, these specs are converted to regular version specs supported by all package managers.
364
365- For better compatibility with prettier, two new default patterns added to `public-hoist-pattern`:
366 - `@prettier/plugin-*`
367 - `*prettier-plugin-*`
368
369## 5.11.1
370
371### Patch Changes
372
373- Retry metadata download if the received JSON is broken [#2949](https://github.com/pnpm/pnpm/issues/2949).
374
375## 5.11.0
376
377### Minor Changes
378
379- Conflicts in `pnpm-lock.yaml` are automatically fixed by `pnpm install` [#2965](https://github.com/pnpm/pnpm/pull/2965).
380
381## 5.10.4
382
383### Patch Changes
384
385- Don't ignore the `overrides` field of the root project, when the scope of the command doesn't include the root project.
386
387## 5.10.2
388
389### Patch Changes
390
391- When extracting packages to the store, file duplicates are skipped.
392- When creating a hard link fails, fall back to copying only if the target file does not exist.
393
394## 5.10.1
395
396### Minor Changes
397
398- A `"pnpm"."overrides"` field may be used to override version ranges of dependencies.
399 The overrides field can be specified only in the root project's `package.json`.
400
401 An example of the `"pnpm"."overrides"` field:
402
403 ```json
404 {
405 "pnpm": {
406 "overrides": {
407 "foo": "^1.0.0",
408 "bar@^2.1.0": "3.0.0",
409 "qar@1>zoo": "2"
410 }
411 }
412 }
413 ```
414
415 You may specify the package to which the overriden dependency belongs by separating the package selector from the dependency selector with a ">", for example `qar@1>zoo` will only override the `zoo` dependency of any `qar@1` dependency.
416
417- A new setting added for specifying the shell to use, when running scripts: script-shell [#2942](https://github.com/pnpm/pnpm/issues/2942)
418
419- When some of the dependencies of a package have the package as a peer depenendency, don't make the dependency a peer depenendency of itself.
420
421- Lockfile version bumped to 5.2
422
423## 5.9.3
424
425### Patch Changes
426
427- Fixes a regression with CLI commands inside a workspace introduced in v5.9.0 [#2925](https://github.com/pnpm/pnpm/issues/2925)
428
429## 5.9.2
430
431### Patch Changes
432
433- Fixed multiple issues with inconsistent lockfile generation [#2919](https://github.com/pnpm/pnpm/issues/2919)
434
435## 5.9.0
436
437### Minor Changes
438
439- Plug'n'Play support added [#2902](https://github.com/pnpm/pnpm/issues/2902)
440
441 To use Plug'n'Play in a project, create a `.npmrc` file in its root with the following content:
442
443 ```ini
444 node-linker=pnp
445
446 ; Setting symlink to false is optional.
447 symlink=false
448 ```
449
450 All the commands will work, when executed through `pnpm run`.
451 However, directly executing a `.js` file with Node.js will fail. Node's
452 resolver should be patched with `.pnp.js`. So instead of `node index.js`, you should
453 run: `node --require=./.pnp.js index.js`
454
455- New setting: `symlink` [#2900](https://github.com/pnpm/pnpm/pull/2900)
456
457 When `symlink` is set to `false`, pnpm creates a virtual store directory (`node_modules/.pnpm`) without any symlinks.
458
459### Patch Changes
460
461- Fixed some edge cases with resolving peer dependencies [#2919](https://github.com/pnpm/pnpm/issues/2919).
462- Installation should fail if there are references to a project that has been removed from the workspace [#2905](https://github.com/pnpm/pnpm/pull/2905).
463- pnpm should not suggest to update pnpm to a newer version, when the installed version is bigger than latest.
464
465## 5.8.0
466
467### Minor Changes
468
469- New setting: `shell-emulator` [#2621](https://github.com/pnpm/pnpm/issues/2621)
470
471 When `shell-emulator` is `true`, pnpm will use a shell emulator to execute scripts. So things like `FOO=1 pnpm run foo` and other simple bash syntax will work on Windows.
472
473 pnpm uses the shell emulator that was developed for Yarn v2: [@yarnpkg/shell](https://www.npmjs.com/package/@yarnpkg/shell).
474
475- Exluding projects using `--filter=!<selector>` [#2804](https://github.com/pnpm/pnpm/issues/2804)
476
477 Packages may be excluded from a command's scope, using "!" at the beginning of the selector.
478
479 For instance, this will run tests in all projects except `foo`:
480
481 ```
482 pnpm --filter=!foo test
483 ```
484
485 And this one will run tests in all projects that are not under the `lib` directory:
486
487 ```
488 pnpm --filter=!./lib test
489 ```
490
491### Patch Changes
492
493- When searching for a global bin directory, also look for symlinked commands [#2888](https://github.com/pnpm/pnpm/issues/2888).
494- Don’t remove non‑pnpm `.dot_files` from `node_modules` [#2833](https://github.com/pnpm/pnpm/pull/2833).
495- During publish, check the active branch name after checking if the branch is clean.
496- The `INIT_CWD` env variable is always set to the lockfile directory for scripts of dependencies [#2897](https://github.com/pnpm/pnpm/pull/2897).
497- When a package is both a dev dependency and a prod dependency, the package should be linked when installing prod dependencies only. This was an issue only when a lockfile was not present during installation [#2882](https://github.com/pnpm/pnpm/issues/2882).
498
499## 5.7.0
500
501### Minor Changes
502
503- Performance improvements:
504 - If a file in the store was never modified, we are not checking its integrity ([#2876](https://github.com/pnpm/pnpm/pull/2876)).
505 - All directories in the virtual store are created before symlinking and importing packages starts ([#2875](https://github.com/pnpm/pnpm/pull/2875)).
506
507## 5.6.1
508
509### Patch Changes
510
511- Fixing a regression introduced in v5.5.13. Installation should never fail during automatic importing method selection (#2869).
512
513## 5.6.0
514
515### Minor Changes
516
517- `--workspace-root`, `-w`: a new option that allows to focus on the root workspace project.
518
519 E.g., the following command runs the `lint` script of the root `package.json` from anywhere in the monorepo:
520
521 ```
522 pnpm -w lint
523 ```
524
525 PR #2866
526
527- The progress indicator also shows the number of dependencies that are being added to the modules direcotory (#2832).
528
529- Don't report scope, when only one workspace package is selected (#2855).
530
531- If a script is not found in the current project but is present in the root project of the workspace, notify the user about it in the hint of the error (#2859).
532
533- Publicly hoist anything that has "types" in the name. Packages like `@babel/types` are publicly hoisted by default (#2865).
534
535### Patch Changes
536
537- When no matching version is found, report the actually specified version spec in the error message (not the normalized one) (#1314).
538
539## 5.5.13
540
541### Patch Changes
542
543- When `package-import-method` is set to `auto`, cloning is only tried once. If it fails, it is not retried for other packages.
544- More information added to the Git check errors and prompt.
545- Report an info log instead of a warning when some binaries cannot be linked.
546
547## 5.5.12
548
549### Patch Changes
550
551- In some rare cases, `pnpm install --no-prefer-frozen-lockfile` didn't link the direct dependencies to the root `node_modules`. This was happening when the direct dependency was also resolving some peer dependencies.
552
553## 5.5.11
554
555### Patch Changes
556
557- Sometimes, when installing new dependencies that rely on many peer dependencies, or when running installation on a huge monorepo, there will be hundreds or thousands of warnings. Printing many messages to the terminal is expensive and reduces speed, so pnpm will only print a few warnings and report the total number of the unprinted warnings.
558- `pnpm outdated --long` should print details about the outdated commands.
559
560## 5.5.10
561
562### Patch Changes
563
564- Fixing a regression that was shipped with pnpm v5.5.6. Cyclic dependencies that have peer dependencies were not symlinked to the root of `node_modules`, when they were direct dependencies.
565
566## 5.5.9
567
568### Patch Changes
569
570- Always try to resolve optional peer dependencies. Fixes a regression introduced in pnpm v5.5.8
571
572## 5.5.8
573
574### Patch Changes
575
576- "Heap out of memory" error fixed, which happened on some huge projects with big amount of peer dependencies, since pnpm v3.4.0 (#2339).
577
578## 5.5.7
579
580### Patch Changes
581
582- Ignore non-array bundle\[d]Dependencies fields. Fixes a regression caused by https://github.com/pnpm/pnpm/commit/5322cf9b39f637536aa4775aa64dd4e9a4156d8a
583
584## 5.5.6
585
586### Patch Changes
587
588- "Heap out of memory" error fixed, which happened on some huge projects with big amount of peer dependencies, since pnpm v3.4.0 (#2339).
589- `pnpm add --global <pkg>` should not break the global package, when the `save` setting is set to `false` (#2261).
590- `pnpm test|start|stop` should allow the same options as `pnpm run test|start|stop` (#2814).
591- Improve the error message on 404 errors. Include authorization details (#2818).
592
593## 5.5.5
594
595### Patch Changes
596
597- Generate a valid lockfile, when the same dependency is specified both in `devDependencies` and `optionalDependencies` (#2807).
598- It should be possible to set the fetch related options through CLI options (#2810).
599- Fix a regression introduced to `pnpm run --parallel <script>` in pnpm v5.5.4.
600
601## 5.5.4
602
603### Patch Changes
604
605- Any ESLint related dependencies are publicly hoisted by default (#2799).
606- `pnpm install -r` should recreate the modules directory
607 if the hoisting patterns were updated in a local config file.
608 The hoisting patterns are configured via the `hoist-pattern`
609 and `public-hoist-pattern` settings (#2802).
610- The same code should run when running some command inside a project directory,
611 or when using `--filter` to select a specific workspace project (#2805).
612
613 This fixes an issue that was happening when running `pnpm add pkg` inside a workspace.
614 The issue was not reproducible when running `pnpm add pkg --filter project` (#2798).
615
616## 5.5.3
617
618### Patch Changes
619
620- pnpm should not always suggest to reinstall the modules directory, when `public-hoist-pattern` is set to nothing (#2783).
621- When searching for a suitable directory for the global executables, search for node, npm, pnpm files only, not directories (#2793).
622
623## 5.5.2
624
625### Patch Changes
626
627- `pnpm publish -r` does not publish packages with the temporary `pnpm-temp` distribution tag (#2686).
628- Print the authorization settings (with hidden private info), when an authorization error happens during fetch (#2774).
629
630## 5.5.1
631
632### Patch Changes
633
634- Stop looking for project root not only when `package.json` or `node_modules` is found
635 but also on `package.json5` and `package.yaml`.
636
637## 5.5.0
638
639### Minor Changes
640
641- Allow unknown options that are prefixed with `config.`
642
643 `pnpm install --foo` would fail with an unknown option error.
644
645 `pnpm install --config.foo` will work fine, setting the `npm_config_foo` environment variable for child lifecycle events.
646
647### Patch Changes
648
649- Don't leave empty temp directories in home directory (#2749).
650- Reunpack the contents of a modified tarball dependency (#2747).
651- `pnpm list -r` should print the legend only once.
652- Don't read the `.npmrc` file that is outside the workspace.
653- Hoisting should work in a workspace that has no root project.
654
655## 5.4.12
656
657### Patch Changes
658
659- Fixing regression of v5.4.5: the `pnpm update` command should update the direct dependencies of the project.
660
661## 5.4.11
662
663### Patch Changes
664
665- Fixing regression of v5.4.10: a warning during `package.json` save.
666
667## 5.4.10
668
669### Patch Changes
670
671- Don't add a trailing new line to `package.json` if no trailing new line was present in it (#2716).
672- Installing a new dependency with a trailing `@` (#2737).
673- Ignore files in the modules directory (#2730).
674
675## 5.4.9
676
677### Patch Changes
678
679- Get the right package name of a package resolved from GitHub registry (#2734).
680- Registry set in lockfile resolution should not be ignored (#2733).
681- Workspace range prefix should be removed from `peerDependencies` before publish (#2467).
682- Use the same versions of dependencies across the pnpm monorepo.
683- Fix lockfile not updated when remove dependency in project with readPackage hook (#2726).
684
685## 5.4.8
686
687### Patch Changes
688
689- `pnpm audit --audit-level high` should not error if the found vulnerabilities are low and/or moderate (#2721).
690- When purging an incompatible modules directory, don't remove the actual directory, just the contents of it (#2720).
691
692## 5.4.7
693
694### Patch Changes
695
696- `pnpm outdated` should exit with exit code 1, when there are outdated dependencies.
697- `pnpm audit` should exit with exit code 1, when vulnerabilities are found.
698- `pnpm install --prod --frozen-lockfile` should not fail if there are dev dependencies used as peer dependencies of prod dependencies (#2711).
699
700## 5.4.6
701
702### Patch Changes
703
704- `pnpm root -g` should not fail if pnpm has no write access to the global bin directory (#2700).
705
706## 5.4.5
707
708### Patch Changes
709
710- `pnpm update dep --depth Infinity` should only update `dep`.
711- `pnpm publish -r --dry-run` should not publish anything to the registry.
712
713## 5.4.4
714
715### Patch Changes
716
717- `pnpm root -g` should not fail if pnpm has no write access to the global bin directory (#2700).
718- Suggest to use pnpm to update pnpm.
719
720## 5.4.3
721
722### Patch Changes
723
724- Should not print colored output when `color` is set to `never`. This was an issue in commands that don't use `@pnpm/default-reporter`. Commands like `pnpm list`, `pnpm outdated`.
725- Changes that are made by the `readPackage` hook are not saved to the `package.json` files of projects.
726- Allow the `--registry` option with the `pnpm audit` command.
727- Allow the `--save-workspace-protocol` option.
728- Don't use inversed colors to highlight search results in `pnpm list`, `pnpm why`.
729
730## 5.4.2
731
732### Patch Changes
733
734- `pnpm install` should work as `pnpm install --filter {.}...`, when `recursive-install` is `false`.
735- On first install, print an info message about the package importing (hard linking, cloning, or copying) method
736 and the location of the virtual store and the content-addressable store.
737
738## 5.4.0
739
740### Minor Changes
741
742- Installation of private Git-hosted repositories via HTTPS using an auth token.
743
744 ```text
745 pnpm add git+https://{token}:x-oauth-basic@github.com/SOME_ORG/SOME_PRIVATE_REPO.git
746 ```
747
748- A new setting called `recursive-install` was added. When it is set to `false`, `pnpm install` will only install dependencies in current project, even when executed inside a monorepo.
749
750 If `recursive-install` is `false`, you should explicitly run `pnpm install -r` in order to install all dependencies in all workspace projects.
751
752- Projects that don't have a `"version"` field may be installed as dependencies of other projects in the workspace, using the `"workspace:0.0.0"` specifier.
753
754 So if there's `foo` in the repository that has no version field, `bar` may have it as a dependency:
755
756 ```json
757 "dependencies": {
758 "foo": "workspace:0.0.0"
759 }
760 ```
761
762- By default, all ESLint plugin are hoisted to the root of `node_modules`.
763
764 `eslint-plugin-*` added as one of the default patterns of `public-hoist-pattern`.
765
766- Improved error message on workspace range resolution error.
767
768 Now the path to the project is printed, where the error originated.
769
770### Patch Changes
771
772- `pnpm prune` should accept the `--no-optional` and `--no-dev` options.
773
774## 5.3.0
775
776### Minor Changes
777
778- Any unknown command is assumed to be a script. So `pnpm foo` becomes `pnpm run foo`.
779
780### Patch Changes
781
782- Fix installation of packages via repository URL. E.g., `pnpm add https://github.com/foo/bar`.
783
784## 5.2.9
785
786### Patch Changes
787
788- `run --silent <cmd>` should only print output of the command and nothing from pnpm (#2660).
789- installing a new optional dependency that has an option dependency should not fail (#2663).
790
791## 5.2.8
792
793### Patch Changes
794
795- Fixing some issues with finding the target directory for command files during global installation.
796
797## 5.2.7
798
799### Patch Changes
800
801- Fixing some issues with finding the target directory for command files during global installation.
802
803## 5.2.6
804
805### Patch Changes
806
807- Use the proxy settings not only during resolution but also when fetching tarballs.
808
809## 5.2.5
810
811### Patch Changes
812
813- Fixing some regressions with global bin directory caused by v5.2.4.
814
815## 5.2.4
816
817### Patch Changes
818
819- Find the proper directory for linking executables during global installation.
820- Fix `pnpm list --long`. This was a regression in pnpm v5.0.0.
821
822## 5.2.3
823
824### Patch Changes
825
826- Own implementation of the `pnpm bin` command added (previously it was passed through to `npm bin`).
827- Read the correct PATH env variable on all systems, when running pnpx. One Windows the correct path name might be Path or other.
828- Install the pnpm bin executable to the directory of the globally installed pnpm executable, when running `pnpm add -g pnpm`.
829- `pnpm store prune` should not fail when the store has some foreign files.
830- `pnpm unlink --global` should unlink bin files from the global executables directory.
831
832## 5.2.2
833
834### Patch Changes
835
836- Don't remove skipped optional dependencies from the current lockfile on partial installation.
837
838## 5.2.1
839
840### Patch Changes
841
842- Hoisting should not fail if some of the aliases cannot be hoisted due to issues with the lockfile.
843
844## 5.2.0
845
846### Minor Changes
847
848- Added a new setting: `public-hoist-pattern`. This setting can be overwritten by `shamefully-hoist`. The default value of `public-hoist-pattern` is `types/*`.
849
850 If `shamefully-hoist` is `true`, `public-hoist-pattern` is set to `*`.
851
852 If `shamefully-hoist` is `false`, `public-hoist-pattern` is set to nothing.
853
854 `public-hoist-pattern` example configuration (through a `.npmrc` file):
855
856 ```
857 public-hoist-pattern[]=@types/*
858 public-hoist-pattern[]=@angular/*
859 ```
860
861 Related PR: #2631
862
863- Don't request the full metadata of package when running `pnpm outdated` or `pnpm publish -r` (#2633)
864
865## 5.1.8
866
867### Patch Changes
868
869- Don't fail when the installed package's manifest (`package.json`) starts with a byte order mark (BOM). This is a fix for a regression that appeared in v5.0.0 (#2629).
870
871## 5.1.7
872
873### Patch Changes
874
875- When `link-workspace-packages` is `false`, filtering by dependencies/dependents should ignore any packages that are not specified via `workspace:` ranges (#2625).
876- Print a "Did you mean" line under the unknown option error with any option that look similar to the typed one (#2603).
877
878## 5.1.6
879
880### Patch Changes
881
882- It should be possible to install a tarball through a non-standard URL endpoint served via the registry domain.
883
884 For instance, the configured registry is `https://registry.npm.taobao.org/`.
885 It should be possible to run `pnpm add https://registry.npm.taobao.org/vue/download/vue-2.0.0.tgz`
886
887 Related issue: #2549
888
889## 5.1.5
890
891### Patch Changes
892
893- Print a warning when an HTTP request fails (#2615).
894- Perform headless installation when dependencies should not be linked from the workspace, and they are not indeed linked from the workspace (#2619).
895
896## 5.1.4
897
898### Patch Changes
899
900- Fix too long file name issue during write to the content-addressable store (#2605).
901
902## 5.1.3
903
904### Patch Changes
905
906- Don't remove authorization headers when redirecting requests to the same host (#2602).
907
908## 5.1.2
909
910### Patch Changes
911
912- fix an issue with node-gyp failure. Downgrade uuid.
913
914## 5.1.1
915
916### Patch Changes
917
918- 86d21759d: Print a meaningful error when pnpm is executed with Node.js v13.0-v13.6
919
920## 5.1.0
921
922### Minor Changes
923
924- ffddf34a8: Add new global option called `--stream`. (#2595)
925
926 When used, the output from child processes is streamed to the console immediately, prefixed with the originating package directory. This allows output from different packages to be interleaved.
927
928- The `run` and `exec` commands may use the `--parallel` option.
929
930 `--parallel` completely disregards concurrency and topological sorting,
931 running a given script immediately in all matching packages
932 with prefixed streaming output. This is the preferred flag
933 for long-running processes such as watch run over many packages.
934
935 For example: `pnpm run --parallel watch`
936
937 PR #2599
938
939- Color the child output prefixes (#2598)
940
941### Patch Changes
942
943- A recursive run should not rerun the same package script which started the lifecycle event (#2528).
944- Fixing a regression on Windows. Fall back to copying if linking fails (429c5a560b7a32b0261e471ece349ec136ab7f4d)
945
946## 5.0.2
947
948### Patch Changes
949
950- 2f9c7ca85: Fix a regression introduced in pnpm v5.0.0.
951 Create correct lockfile when the package tarball is hosted not under the registry domain.
952- 160975d62: This fixes a regression introduced in pnpm v5.0.0. Direct local tarball dependencies should always be reanalized on install.
953
954## 5.0.1
955
956### Patch Changes
957
958- 81b537003: The usage of deprecated options should not crash the CLI. When a deprecated option is used (like `pnpm install --no-lock`), just print a warning.
959- 187615f87: Fix installation of git-hosted packages. This was a regression in v5.
960
961## 5.0.0
962
963### Major Changes
964
965- 🚀 33% faster installation times vs pnpm v4.
966
967 In some cases, 2 times faster than Yarn v1! ([performance diff of pnpm v4 vs v5](https://github.com/pnpm/benchmarks-of-javascript-package-managers/commit/5328f0165628b0ee5e22a8a433357d65bee75d64))
968
969 | action | cache | lockfile | node_modules | npm | pnpm | Yarn | Yarn PnP |
970 | ------- | ----- | -------- | ------------ | ----- | ----- | ----- | -------- |
971 | install | | | | 43.3s | 17.5s | 36.7s | 28.6s |
972 | install | ✔ | ✔ | ✔ | 7s | 1.5s | 735ms | n/a |
973 | install | ✔ | ✔ | | 18.3s | 7.8s | 10.5s | 1.8s |
974 | install | ✔ | | | 24.8s | 10.9s | 22.2s | 12.1s |
975 | install | | ✔ | | 23.2s | 15.2s | 22.4s | 13.4s |
976 | install | ✔ | | ✔ | 6.4s | 1.8s | 17.1s | n/a |
977 | install | | ✔ | ✔ | 7.3s | 1.5s | 735ms | n/a |
978 | install | | | ✔ | 6.4s | 3.1s | 33.2s | n/a |
979 | update | n/a | n/a | n/a | 7s | 14.5s | 42.6s | 27.6s |
980
981 All the benchmarks are [here](https://github.com/pnpm/benchmarks-of-javascript-package-managers/tree/5328f0165628b0ee5e22a8a433357d65bee75d64).
982
983- A content-addressable filesystem is used to store packages on the disk.
984
985 pnpm v5 uses a content-addressable filesystem to store all files from all module directories on a disk. If you depend on different versions of lodash, only the files that differ are added to the store. If lodash has 100 files, and a new version has a change only in one of those files, pnpm update will only add 1 new file to the storage.
986
987 For more info about the structure of this new store, you can check the [GitHub issue about it](https://github.com/pnpm/pnpm/issues/2470).
988
989 This change was inspired by [dupe-krill](https://github.com/kornelski/dupe-krill) and the content-addressable storage of Git.
990
991- Reduced directory nesting in the virtual store directory.
992
993 In pnpm v4, if you installed `foo@1.0.0`, it was hard-linked into `node_modules/.pnpm/registry.npmjs.org/foo/1.0.0/`.
994
995 In pnpm v5, it will be hard-linked into `node_modules/.pnpm/foo@1.0.0/`. This new structure of the virtual store directory drastically reduces the number of directories pnpm has to create. Hence, there are fewer filesystem operations, which improves speed.
996
997- `pnpm store usages` removed.
998
999 This command was using information from the `store.json` files, which is not present in the new content-addressable storage anymore.
1000
1001- The `independent-leaves` setting has been removed.
1002
1003 When hoisting was off, it was possible to set the `independent-leaves` setting to `true`. When `true`, leaf dependencies were symlinked directly from the global store. However, we turned hoisting on by default for pnpm v4, so this feature has no future at the moment.
1004
1005- The `resolution-strategy` setting has been removed.
1006
1007 By default, the `fewer-dependencies` resolution strategy is used. It was possible to select a `fast` resolution strategy. This setting is deprecated to simplify future improvements to the resolution algorithm.
1008
1009- The store and the modules directory are not locked.
1010
1011 We are not using directory locks anymore. So the `--no-lock` option will throw an error. Some users had [issues](https://github.com/pnpm/pnpm/issues/594) with locking. We have confidence that pnpm will never leave either node_modules or the store in a broken state,
1012 so we removed locking.
1013
1014- `git-checks` is `true` by default.
1015
1016 By default, `pnpm publish` will make some checks before actually publishing a new version of your package.
1017
1018 The next checks will happen:
1019
1020 - The current branch is your publish branch. The publish branch is `master` by default. This is configurable through the `publish-branch` setting.
1021 - Your working directory is clean (there are no uncommitted changes).
1022 - The branch is up-to-date.
1023
1024 If you don't want this checks, run `pnpm publish --no-git-checks` or set this setting to `false` via a `.npmrc` file.
1025
1026- In case of a crash, the debug file will be written to `node_modules/.pnpm-debug.log` (not to `pnpm-debug.log` as in v4 and earlier).
1027
1028### Minor Changes
1029
1030- The `link-workspace-packages` setting may now be set to `deep`.
1031
1032 When `link-workspace-packages` is set to `deep`, packages from the workspace will be linked even to subdependencies.
1033
\No newline at end of file