pnpm/pnpm
### [`v7.29.1`](https://togithub.com/pnpm/pnpm/releases/tag/v7.29.1)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.29.0...v7.29.1)
#### Patch Changes
- Settings related to authorization should be set/deleted by npm CLI [#6181](https://togithub.com/pnpm/pnpm/issues/6181).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.29.0`](https://togithub.com/pnpm/pnpm/releases/tag/v7.29.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.28.0...v7.29.0)
#### Minor Changes
- A new setting is now supported: `dedupe-peer-dependents`.
When this setting is set to `true`, packages with peer dependencies will be deduplicated after peers resolution.
For instance, let's say we have a workspace with two projects and both of them have `webpack` in their dependencies. `webpack` has `esbuild` in its optional peer dependencies, and one of the projects has `esbuild` in its dependencies. In this case, pnpm will link two instances of `webpack` to the `node_modules/.pnpm` directory: one with `esbuild` and another one without it:
node_modules
.pnpm
webpack@1.0.0_esbuild@1.0.0
webpack@1.0.0
project1
node_modules
webpack -> ../../node_modules/.pnpm/webpack@1.0.0/node_modules/webpack
project2
node_modules
webpack -> ../../node_modules/.pnpm/webpack@1.0.0_esbuild@1.0.0/node_modules/webpack
esbuild
This makes sense because `webpack` is used in two projects, and one of the projects doesn't have `esbuild`, so the two projects cannot share the same instance of `webpack`. However, this is not what most developers expect, especially since in a hoisted `node_modules`, there would only be one instance of `webpack`. Therefore, you may now use the `dedupe-peer-dependents` setting to deduplicate `webpack` when it has no conflicting peer dependencies (explanation at the end). In this case, if we set `dedupe-peer-dependents` to `true`, both projects will use the same `webpack` instance, which is the one that has `esbuild` resolved:
node_modules
.pnpm
webpack@1.0.0_esbuild@1.0.0
project1
node_modules
webpack -> ../../node_modules/.pnpm/webpack@1.0.0_esbuild@1.0.0/node_modules/webpack
project2
node_modules
webpack -> ../../node_modules/.pnpm/webpack@1.0.0_esbuild@1.0.0/node_modules/webpack
esbuild
**What are conflicting peer dependencies?** By conflicting peer dependencies we mean a scenario like the following one:
node_modules
.pnpm
webpack@1.0.0_react@16.0.0_esbuild@1.0.0
webpack@1.0.0_react@17.0.0
project1
node_modules
webpack -> ../../node_modules/.pnpm/webpack@1.0.0/node_modules/webpack
react (v17)
project2
node_modules
webpack -> ../../node_modules/.pnpm/webpack@1.0.0_esbuild@1.0.0/node_modules/webpack
esbuild
react (v16)
In this case, we cannot dedupe `webpack` as `webpack` has `react` in its peer dependencies and `react` is resolved from two different versions in the context of the two projects.
#### Patch Changes
- The configuration added by `pnpm setup` should check if the pnpm home directory is already in the PATH before adding to the PATH.
Before this change, this code was added to the shell:
```sh
export PNPM_HOME="$HOME/Library/pnpm"
export PATH="$PNPM_HOME:$PATH"
```
Now this will be added:
```sh
export PNPM_HOME="$HOME/Library/pnpm"
case ":$PATH:" in
*":$PNPM_HOME:"*) ;;
*) export PATH="$PNPM_HOME:$PATH" ;;
esac
```
- Add `skipped` status in exec report summary when script is missing [#6139](https://togithub.com/pnpm/pnpm/pull/6139).
- `pnpm env -g` should fail with a meaningful error message if pnpm cannot find the pnpm home directory, which is the directory into which Node.js is installed.
- Should not throw an error when local dependency use file protocol [#6115](https://togithub.com/pnpm/pnpm/issues/6115).
- Fix the incorrect error block when subproject has been patched [#6183](https://togithub.com/pnpm/pnpm/issues/6183)
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.28.0`](https://togithub.com/pnpm/pnpm/releases/tag/v7.28.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.27.1...v7.28.0)
#### Minor Changes
- Add `--report-summary` for `pnpm exec` and `pnpm run` [#6008](https://togithub.com/pnpm/pnpm/issues/6008).
- Show path info for `pnpm why --json` or `--long` [#6103](https://togithub.com/pnpm/pnpm/issues/6103).
- Extend the `pnpm.peerDependencyRules.allowedVersions` `package.json` option to support the `parent>child` selector syntax. This syntax allows for extending specific `peerDependencies` [#6108](https://togithub.com/pnpm/pnpm/pull/6108).
#### Patch Changes
- Update the lockfile if a workspace has a new project with no dependencies.
- Fix a case of installs not being deterministic and causing lockfile changes between repeat installs. When a dependency only declares `peerDependenciesMeta` and not `peerDependencies`, `dependencies`, or `optionalDependencies`, the dependency's peers were not considered deterministically before.
- `patch-commit` should auto apply patches in workspaces [#6048](https://togithub.com/pnpm/pnpm/issues/6048)
- Automatically fix conflicts in v6 lockfile.
- `pnpm config set` should write to the global config file by default [#5877](https://togithub.com/pnpm/pnpm/issues/5877).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.27.1`](https://togithub.com/pnpm/pnpm/releases/tag/v7.27.1)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.27.0...v7.27.1)
#### Patch Changes
- Add `store path` description to the `pnpm` cli help.
- Print a hint that suggests to run `pnpm store prune`, when a tarball integrity error happens.
- Don't retry installation if the integrity checksum of a package failed and no lockfile was present.
- Fail with a meaningful error message when cannot parse a proxy URL.
- The `strict-ssl`, `ca`, `key`, and `cert` settings should work with HTTPS proxy servers [#4689](https://togithub.com/pnpm/pnpm/issues/4689).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.27.0`](https://togithub.com/pnpm/pnpm/releases/tag/v7.27.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.26.3...v7.27.0)
#### Minor Changes
- A new `resolution-mode` added: `lowest-direct`. With this resolution mode direct dependencies will be resolved to their lowest versions. So if there is `foo@^1.1.0` in the dependencies, then `1.1.0` will be installed, even if the latest version of `foo` is `1.2.0`.
- Support script selector with RegExp such as `pnpm run /build:.*/` and execute the matched scripts with the RegExp [#5871](https://togithub.com/pnpm/pnpm/pull/5871).
#### Patch Changes
- Fix version number replacing for namespaced workspace packages. `workspace:@foo/bar@*` should be replaced with `npm:@foo/bar@` on publish [#6052](https://togithub.com/pnpm/pnpm/pull/6052).
- When resolving dependencies, prefer versions that are already used in the root of the project. This is important to minimize the number of packages that will be nested during hoisting [#6054](https://togithub.com/pnpm/pnpm/pull/6054).
- Deduplicate direct dependencies.
Let's say there are two projects in the workspace that dependend on `foo`. One project has `foo@1.0.0` in the dependencies while another one has `foo@^1.0.0` in the dependencies. In this case, `foo@1.0.0` should be installed to both projects as satisfies the version specs of both projects.
- Use Map rather than Object in `createPackageExtender` to prevent read the prototype property to native function
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.26.3`](https://togithub.com/pnpm/pnpm/releases/tag/v7.26.3)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.26.2...v7.26.3)
#### Patch Changes
- Directories inside the virtual store should not contain the ( or ) chars. This is to fix issues with storybook and the new v6 `pnpm-lock.yaml` lockfile format [#5976](https://togithub.com/pnpm/pnpm/issues/5976).
- The update command should not replace dependency versions specified via dist-tags [#5996](https://togithub.com/pnpm/pnpm/pull/5996).
- Fixed an issue that was causing pnpm to stuck forever during installation [#5909](https://togithub.com/pnpm/pnpm/issues/5909).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.26.2`](https://togithub.com/pnpm/pnpm/releases/tag/v7.26.2)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.26.1...v7.26.2)
#### Patch Changes
- Wrap text in `pnpm audit` output for better readability [#5981](https://togithub.com/pnpm/pnpm/issues/5981)
- Fix "cross-device link not permitted" error when `node-linker` is set to `hoisted` [#5992](https://togithub.com/pnpm/pnpm/issues/5992).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.26.1`](https://togithub.com/pnpm/pnpm/releases/tag/v7.26.1)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.26.0...v7.26.1)
#### Patch Changes
- Fixed out of memory error that sometimes happens when `node-linker` is set to `hoisted` [#5988](https://togithub.com/pnpm/pnpm/pull/5988).
- Fixed `EMFILE: too many open files` by using graceful-fs for reading bin files of dependencies [#5887](https://togithub.com/pnpm/pnpm/issues/5887).
- Fix lockfile v6 on projects that use patched dependencies [#5967](https://togithub.com/pnpm/pnpm/issues/5967).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.26.0`](https://togithub.com/pnpm/pnpm/releases/tag/v7.26.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.25.1...v7.26.0)
##### Minor Changes
- Add a `pnpm dedupe` command that removes dependencies from the lockfile by re-resolving the dependency graph. This work similar to yarn's [`yarn dedupe --strategy highest`](https://yarnpkg.com/cli/dedupe) command [#5958](https://togithub.com/pnpm/pnpm/pull/5958)
##### Patch Changes
- Packages hoisted to the virtual store are not removed on repeat install, when the non-headless algorithm runs the installation [#5971](https://togithub.com/pnpm/pnpm/pull/5971).
- `prepublishOnly` and `prepublish` should not be executed on `pnpm pack` [#2941](https://togithub.com/pnpm/pnpm/issues/2941).
##### Our Gold Sponsors
##### Our Silver Sponsors
### [`v7.25.1`](https://togithub.com/pnpm/pnpm/releases/tag/v7.25.1)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.25.0...v7.25.1)
#### Patch Changes
- Show dependency paths info in `pnpm audit` output [#3073](https://togithub.com/pnpm/pnpm/issues/3073)
- The store integrity check should validate the side effects cache of the installed package. If the side effects cache is broken, the package needs to be rebuilt [#4997](https://togithub.com/pnpm/pnpm/issues/4997).
- Add more info to the description of the `--force` option in the `pnpm install` command [#5932](https://togithub.com/pnpm/pnpm/pull/5932).
- Don't crash when a bin file is not found and `prefer-symlinked-executables` is `true` [#5946](https://togithub.com/pnpm/pnpm/pull/5946).
- `pnpm install --fix-lockfile` should not fail if the package has no dependencies [#5878](https://togithub.com/pnpm/pnpm/issues/5878).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.25.0`](https://togithub.com/pnpm/pnpm/releases/tag/v7.25.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.24.3...v7.25.0)
#### Minor Changes
- When patching a dependency that is already patched, the existing patch is applied to the dependency, so that the new edit are applied on top of the existing ones. To ignore the existing patches, run the patch command with the `--ignore-existing` option [#5632](https://togithub.com/pnpm/pnpm/issues/5632).
- When `extend-node-path` is set to `false`, the `NODE_PATH` environment variable is not set in the command shims [#5910](https://togithub.com/pnpm/pnpm/pull/5910)
#### Patch Changes
- Ensure the permission of bin file when `prefer-symlinked-executables` is set to `true` [#5913](https://togithub.com/pnpm/pnpm/pull/5913).
- If an external tool or a user have removed a package from node_modules, pnpm should add it back on install. This was only an issue with `node-linker=hoisted`.
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.24.3`](https://togithub.com/pnpm/pnpm/releases/tag/v7.24.3)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.24.2...v7.24.3)
#### Patch Changes
- Don't break lockfile v6 on repeat install if `use-lockfile-v6` is not set to `true`.
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.24.2`](https://togithub.com/pnpm/pnpm/releases/tag/v7.24.2)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.24.1...v7.24.2)
#### Minor Changes
- Added support for `pnpm-lock.yaml` format v6. This new format will be the new lockfile format in pnpm v8. To use the new lockfile format, use the `use-lockfile-v6=true` setting in `.npmrc`. Or run `pnpm install --use-lockfile-v6` [#5810](https://togithub.com/pnpm/pnpm/pull/5810).
#### Patch Changes
- `pnpm run` should fail if the path to the project contains colon(s).
- `pnpm config set key=value` should work the same as `pnpm config set key value` [#5889](https://togithub.com/pnpm/pnpm/issues/5889).
- The upload of built artifacts (side effects) should not fail when `node-linker` is set to `hoisted` and installation runs on a project that already had a `node_modules` directory [#5823](https://togithub.com/pnpm/pnpm/issues/5823).
This fixes a bug introduced by [#5814](https://togithub.com/pnpm/pnpm/pull/5814).
- `pnpm exec` should work when the path to the project contains colon(s) [#5846](https://togithub.com/pnpm/pnpm/issues/5846).
- Git-hosted dependencies should not be built, when `ignore-scripts` is set to `true` [#5876](https://togithub.com/pnpm/pnpm/issues/5876).
#### Our Gold Sponsors
This PR contains the following updates:
7.18.2
->7.29.1
Release Notes
pnpm/pnpm
### [`v7.29.1`](https://togithub.com/pnpm/pnpm/releases/tag/v7.29.1) [Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.29.0...v7.29.1) #### Patch Changes - Settings related to authorization should be set/deleted by npm CLI [#6181](https://togithub.com/pnpm/pnpm/issues/6181). #### Our Gold SponsorsRun & review this pull request in StackBlitz Codeflow.