pnpm/pnpm
### [`v8.2.0`](https://togithub.com/pnpm/pnpm/releases/tag/v8.2.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v8.1.1...v8.2.0)
#### Minor Changes
- Allow env variables to be specified with default values in `.npmrc`. This is a convention used by Yarn too.
Using `${NAME-fallback}` will return `fallback` if `NAME` isn't set. `${NAME:-fallback}` will return `fallback` if `NAME` isn't set, or is an empty string [#6018](https://togithub.com/pnpm/pnpm/issues/6018).
#### Patch Changes
- Add `-g` to mismatch registries error info when original command has `-g` option [#6224](https://togithub.com/pnpm/pnpm/issues/6224).
- Don't fail with EBUSY error when trying to copy a file from the store [#6201](https://togithub.com/pnpm/pnpm/issues/6201)
- `pnpm config get ` should print boolean values [#6360](https://togithub.com/pnpm/pnpm/issues/6360)
- Don't print an info message about linked dependencies if they are real linked dependencies specified via the `link:` protocol in `package.json` [#6372](https://togithub.com/pnpm/pnpm/issues/6372)
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v8.1.1`](https://togithub.com/pnpm/pnpm/releases/tag/v8.1.1)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v8.1.0...v8.1.1)
#### Patch Changes
- Repeat installation should work on a project that has a dependency with parentheses in the scope name [#6348](https://togithub.com/pnpm/pnpm/issues/6348).
- Error summary should be reported as expected.
- Update `@yarnpkg/shell` to fix issues in the shell emulator [#6320](https://togithub.com/pnpm/pnpm/issues/6320).
- Installation should not fail when there is a local dependency in a directory that starts with the `@` character [#6332](https://togithub.com/pnpm/pnpm/issues/6332).
- Registries are now passed to the `preResolution` hook.
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v8.1.0`](https://togithub.com/pnpm/pnpm/releases/tag/v8.1.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v8.0.0...v8.1.0)
#### Minor Changes
- A new setting has been added called `dedupe-direct-deps`, which is disabled by default. When set to `true`, dependencies that are already symlinked to the root `node_modules` directory of the workspace will not be symlinked to subproject `node_modules` directories. This feature was enabled by default in v8.0.0 but caused issues, so it's best to disable it by default [#6299](https://togithub.com/pnpm/pnpm/issues/6299).
- Add `ignore-workspace-cycles` to silence workspace cycle warning [#6308](https://togithub.com/pnpm/pnpm/pull/6308).
#### Patch Changes
- Print the right lowest supported Node.js version in the error message, when pnpm is executed with an old Node.js version [#6297](https://togithub.com/pnpm/pnpm/issues/6297).
- Improve the outdated lockfile error message [#6304](https://togithub.com/pnpm/pnpm/pull/6304).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v8.0.0`](https://togithub.com/pnpm/pnpm/releases/tag/v8.0.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.32.0...v8.0.0)
We are excited to announce the latest release of pnpm! To install it, check the [installation page](https://pnpm.io/installation).
![image](https://user-images.githubusercontent.com/1927579/228101984-4a6bf4e5-9e70-480f-bf3b-140288e8f81e.png)
#### Major Changes
##### Node.js 14 Support Discontinued
If you still require Node.js 14, don't worry. We ship pnpm bundled with Node.js. This means that regardless of which Node.js version you've installed, pnpm will operate using the necessary Node.js runtime. For this to work you need to install pnpm either using the [standalone script](https://pnpm.io/installation#using-a-standalone-script) or install the `@pnpm/exe` package.
##### Configuration Updates
- [`auto-install-peers`](https://pnpm.io/npmrc#auto-install-peers): enabled by default.
- [`dedupe-peer-dependents`](https://pnpm.io/npmrc#dedupe-peer-dependents): enabled by default.
- [`resolve-peers-from-workspace-root`](https://pnpm.io/npmrc#resolve-peers-from-workspace-root): enabled by default.
- [`save-workspace-protocol`](https://pnpm.io/npmrc#save-workspace-protocol): set to `rolling` by default.
- [`resolution-mode`](https://pnpm.io/npmrc#resolution-mode): set to `lowest-direct` by default.
- [`publishConfig.linkDirectory`](https://pnpm.io/package_json#publishconfiglinkdirectory): enabled by default.
Most of the configuration changes are related to peer dependencies. Most of these settings were implemented long ago, and we recommended them to users encountering peer dependency issues. The recently added `dedupe-peer-dependents` resolved many such problems. With these new defaults, pnpm will face significantly fewer issues during migration from other package managers.
##### Lockfile Modifications
- [Lockfile v6](https://togithub.com/pnpm/pnpm/pull/5810) is adopted. This new format improves the readability of the lockfile by removing hashes from package IDs. It also has some rearrangement of fields in the `importers` section. **The new `pnpm-lock.yaml` file is more resistant to git merge conflicts!**
- The registry field is removed from the `resolution` object in `pnpm-lock.yaml`.
- A lockfile is generated even for projects with no dependencies.
##### Other Changes
- When there's a `files` field in the `package.json`, only the files that are listed in it will be [deployed](https://pnpm.io/cli/deploy). The same logic is applied when [injecting packages](https://pnpm.io/package_json#dependenciesmetainjected). This behaviour can be changed by setting the [`deploy-all-files`](https://pnpm.io/8.x/npmrc#deploy-all-files) setting to `true` (Related issue [#5911](https://togithub.com/pnpm/pnpm/issues/5911)).
- Direct dependencies are deduped. If a dependency is present in both a project and the workspace root, it will only be linked to the workspace root.
#### Migration Instructions
Before updating pnpm to v8 in your CI, regenerate your `pnpm-lock.yaml`. To upgrade your lockfile, run `pnpm install` and commit the changes. Existing dependencies will not be updated; however, due to configuration changes in pnpm v8, some missing peer dependencies may be added to the lockfile and some packages may get deduplicated.
You can commit the new lockfile even before upgrading Node.js in the CI, as pnpm v7 already supports the new lockfile format.
#### pnpm v7 Support
pnpm v7 will likely not receive any new features, but it will continue to get bug fixes for a few months and vulnerability fixes for at least a year.
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.32.0`](https://togithub.com/pnpm/pnpm/releases/tag/v7.32.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.31.0...v7.32.0)
#### Minor Changes
- Allow env variables to be specified with default values in `.npmrc`. This is a convention used by Yarn too.
Using `${NAME-fallback}` will return `fallback` if `NAME` isn't set. `${NAME:-fallback}` will return `fallback` if `NAME` isn't set, or is an empty string [#6018](https://togithub.com/pnpm/pnpm/issues/6018).
#### Patch Changes
- `pnpm config get ` returns empty when the value is a boolean
- Don't print an info message about linked dependencies if they are real linked dependencies specified via the `link:` protocol in `package.json`.
- Add -g to mismatch registries error info when original command has -g option [#6224](https://togithub.com/pnpm/pnpm/issues/6224).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.31.0`](https://togithub.com/pnpm/pnpm/releases/tag/v7.31.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.30.5...v7.31.0)
#### Minor Changes
- Add `ignore-workspace-cycles` to silence workspace cycle warning [#6308](https://togithub.com/pnpm/pnpm/pull/6308).
##### Patch Changes
- Registries are now passed to the preResolution hook.
- Repeat installation should work on a project that has a dependency with () chars in the scope name [#6348](https://togithub.com/pnpm/pnpm/issues/6348).
- Should report error summary as expected.
- Update `@yarnpkg/shell` to fix issues in the shell emulator [#6320](https://togithub.com/pnpm/pnpm/issues/6320).
- Installation should not fail when there is a local dependency that starts in a directory that starts with the `@` char [#6332](https://togithub.com/pnpm/pnpm/issues/6332).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.30.5`](https://togithub.com/pnpm/pnpm/releases/tag/v7.30.5)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.30.4...v7.30.5)
#### Patch Changes
- `pnpm audit` should work even if there are no `package.json` file, just a `pnpm-lock.yaml` file.
- Dedupe direct dependencies after hoisting.
- Don't remove automatically installed peer dependencies from the root workspace project, when `dedupe-peer-dependents` is `true` [#6154](https://togithub.com/pnpm/pnpm/issues/6154).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.30.4`](https://togithub.com/pnpm/pnpm/compare/v7.30.3...v7.30.4)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.30.3...v7.30.4)
### [`v7.30.3`](https://togithub.com/pnpm/pnpm/releases/tag/v7.30.3)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.30.2...v7.30.3)
#### Patch Changes
- Should use most specific override rule when multiple rules match the same target [#6210](https://togithub.com/pnpm/pnpm/issues/6210).
- Fix regression introduced in v7.30.1 [#6271](https://togithub.com/pnpm/pnpm/issues/6271).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.30.2`](https://togithub.com/pnpm/pnpm/compare/v7.30.1...v7.30.2)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.30.1...v7.30.2)
### [`v7.30.1`](https://togithub.com/pnpm/pnpm/releases/tag/v7.30.1)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.30.0...v7.30.1)
#### Patch Changes
- Don't write the `pnpm-lock.yaml` file if it has no changes and `pnpm install --frozen-lockfile` was executed [#6158](https://togithub.com/pnpm/pnpm/issues/6158).
- Fix git-hosted dependencies referenced via `git+ssh` that use semver selectors [#6239](https://togithub.com/pnpm/pnpm/pull/6239).
- When publish some package throws an error, the exit code should be non-zero [#5528](https://togithub.com/pnpm/pnpm/issues/5528).
- Only three paths are displayed in `pnpm audit` output [#6203](https://togithub.com/pnpm/pnpm/issues/6203)
- Aliased packages should be used to resolve peer dependencies too [#4301](https://togithub.com/pnpm/pnpm/issues/4301).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.30.0`](https://togithub.com/pnpm/pnpm/releases/tag/v7.30.0)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.29.3...v7.30.0)
#### Minor Changes
- Allow to set a custom directory for storing patch files via the `patches-dir` setting [#6215](https://togithub.com/pnpm/pnpm/pull/6215)
#### Patch Changes
- New directories should be prepended to NODE_PATH in command shims, not appended.
- Retry copying file on EBUSY error [#6201](https://togithub.com/pnpm/pnpm/issues/6201).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.29.3`](https://togithub.com/pnpm/pnpm/releases/tag/v7.29.3)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.29.2...v7.29.3)
#### Patch Changes
- Command shim should not set higher priority to the `node_modules/.pnpm/node_modules` directory through the `NODE_PATH` env variable, then the command's own `node_modules` directory [#5176](https://togithub.com/pnpm/pnpm/issues/5176).
- `extend-node-path` is set back to `true` by default. It was set to `false` in v7.29.2 in order to fix issues with multiple versions of Jest in one workspace. It has caused other issues, so now we keep extending `NODE_PATH`. We have fixed the Jest issue with a different solution [#6213](https://togithub.com/pnpm/pnpm/issues/6213).
#### Our Gold Sponsors
#### Our Silver Sponsors
### [`v7.29.2`](https://togithub.com/pnpm/pnpm/compare/v7.29.1...v7.29.2)
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v7.29.1...v7.29.2)
### [`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
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 8.x releases. But if you manually upgrade to 8.x then Renovate will re-enable minor and patch updates automatically.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.
This PR contains the following updates:
7.22.0
->8.2.0
Release Notes
pnpm/pnpm
### [`v8.2.0`](https://togithub.com/pnpm/pnpm/releases/tag/v8.2.0) [Compare Source](https://togithub.com/pnpm/pnpm/compare/v8.1.1...v8.2.0) #### Minor Changes - Allow env variables to be specified with default values in `.npmrc`. This is a convention used by Yarn too. Using `${NAME-fallback}` will return `fallback` if `NAME` isn't set. `${NAME:-fallback}` will return `fallback` if `NAME` isn't set, or is an empty string [#6018](https://togithub.com/pnpm/pnpm/issues/6018). #### Patch Changes - Add `-g` to mismatch registries error info when original command has `-g` option [#6224](https://togithub.com/pnpm/pnpm/issues/6224). - Don't fail with EBUSY error when trying to copy a file from the store [#6201](https://togithub.com/pnpm/pnpm/issues/6201) - `pnpm config get⚠️ No Changeset found
Latest commit: 3f98e730364fa8dcb91085f89d4adab78d6739de
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver typesClick here to learn what changesets are, and how to add one.
Click here if you're a maintainer who wants to add a changeset to this PR
Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 8.x releases. But if you manually upgrade to 8.x then Renovate will re-enable
minor
andpatch
updates automatically.If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.