pnpm/pnpm (pnpm)
### [`v9.9.0`](https://togithub.com/pnpm/pnpm/releases/tag/v9.9.0): pnpm 9.9
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v9.8.0...v9.9.0)
#### Minor Changes
- **Minor breaking change.** This change might result in resolving your peer dependencies slightly differently but we don't expect it to introduce issues.
We had to optimize how we resolve peer dependencies in order to fix some [infinite loops and out-of-memory errors during peer dependencies resolution](https://togithub.com/pnpm/pnpm/issues/8370).
When a peer dependency is a prod dependency somewhere in the dependency graph (with the same version), pnpm will resolve the peers of that peer dependency in the same way across the subgraph.
For example, we have `react-dom` in the peer deps of the `form` and `button` packages. `card` has `react-dom` and `react` as regular dependencies and `card` is a dependency of `form`.
These are the direct dependencies of our example project:
form
react@16
react-dom@16
These are the dependencies of card:
button
react@17
react-dom@16
When resolving peers, pnpm will not re-resolve `react-dom` for `card`, even though `card` shadows `react@16` from the root with `react@17`. So, all 3 packages (`form`, `card`, and `button`) will use `react-dom@16`, which in turn uses `react@16`. `form` will use `react@16`, while `card` and `button` will use `react@17`.
Before this optimization `react-dom@16` was duplicated for the `card`, so that `card` and `button` would use a `react-dom@16` instance that uses `react@17`.
Before the change:
form
-> react-dom@16(react@16)
-> react@16
card
-> react-dom@16(react@17)
-> react@17
button
-> react-dom@16(react@17)
-> react@17
After the change
form
-> react-dom@16(react@16)
-> react@16
card
-> react-dom@16(react@16)
-> react@17
button
-> react-dom@16(react@16)
-> react@17
#### Patch Changes
- `pnpm deploy` should write the `node_modules/.modules.yaml` to the `node_modules` directory within the deploy directory [#7731](https://togithub.com/pnpm/pnpm/issues/7731).
- Don't override a symlink in `node_modules` if it already points to the right location [pnpm/symlink-dir#54](https://togithub.com/pnpm/symlink-dir/pull/54).
#### Platinum Sponsors
#### Gold Sponsors
#### Our Silver Sponsors
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
9.8.0
->9.9.0
9.8.0
->9.9.0
Release Notes
pnpm/pnpm (pnpm)
### [`v9.9.0`](https://togithub.com/pnpm/pnpm/releases/tag/v9.9.0): pnpm 9.9 [Compare Source](https://togithub.com/pnpm/pnpm/compare/v9.8.0...v9.9.0) #### Minor Changes - **Minor breaking change.** This change might result in resolving your peer dependencies slightly differently but we don't expect it to introduce issues. We had to optimize how we resolve peer dependencies in order to fix some [infinite loops and out-of-memory errors during peer dependencies resolution](https://togithub.com/pnpm/pnpm/issues/8370). When a peer dependency is a prod dependency somewhere in the dependency graph (with the same version), pnpm will resolve the peers of that peer dependency in the same way across the subgraph. For example, we have `react-dom` in the peer deps of the `form` and `button` packages. `card` has `react-dom` and `react` as regular dependencies and `card` is a dependency of `form`. These are the direct dependencies of our example project: form react@16 react-dom@16 These are the dependencies of card: button react@17 react-dom@16 When resolving peers, pnpm will not re-resolve `react-dom` for `card`, even though `card` shadows `react@16` from the root with `react@17`. So, all 3 packages (`form`, `card`, and `button`) will use `react-dom@16`, which in turn uses `react@16`. `form` will use `react@16`, while `card` and `button` will use `react@17`. Before this optimization `react-dom@16` was duplicated for the `card`, so that `card` and `button` would use a `react-dom@16` instance that uses `react@17`. Before the change: form -> react-dom@16(react@16) -> react@16 card -> react-dom@16(react@17) -> react@17 button -> react-dom@16(react@17) -> react@17 After the change form -> react-dom@16(react@16) -> react@16 card -> react-dom@16(react@16) -> react@17 button -> react-dom@16(react@16) -> react@17 #### Patch Changes - `pnpm deploy` should write the `node_modules/.modules.yaml` to the `node_modules` directory within the deploy directory [#7731](https://togithub.com/pnpm/pnpm/issues/7731). - Don't override a symlink in `node_modules` if it already points to the right location [pnpm/symlink-dir#54](https://togithub.com/pnpm/symlink-dir/pull/54). #### Platinum SponsorsConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.