rspack
rspack copied to clipboard
chore(deps): update pnpm to v10
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| pnpm (source) | 9.15.9 -> 10.9.0 |
[!WARNING] Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
pnpm/pnpm (pnpm)
v10.9.0
Minor Changes
-
Added support for installing JSR packages. You can now install JSR packages using the following syntax:
pnpm add jsr:<pkg_name>or with a version range:
pnpm add jsr:<pkg_name>@​<range>For example, running:
pnpm add jsr:@​foo/barwill add the following entry to your
package.json:{ "dependencies": { "@​foo/bar": "jsr:^0.1.2" } }When publishing, this entry will be transformed into a format compatible with npm, older versions of Yarn, and previous pnpm versions:
{ "dependencies": { "@​foo/bar": "npm:@​jsr/foo__bar@^0.1.2" } }Related issue: #β8941.
Note: The
@jsrscope defaults to https://npm.jsr.io/ if the@jsr:registrysetting is not defined. -
Added a new setting,
dangerouslyAllowAllBuilds, for automatically running any scripts of dependencies without the need to approve any builds. It was already possible to allow all builds by adding this topnpm-workspace.yaml:neverBuiltDependencies: []dangerouslyAllowAllBuildshas the same effect but also allows to be set globally via:pnpm config set dangerouslyAllowAllBuilds trueIt can also be set when running a command:
pnpm install --dangerously-allow-all-builds
Patch Changes
- Fix a false negative in
verifyDepsBeforeRunwhennodeLinkerishoistedand there is a workspace package without dependencies andnode_modulesdirectory #β9424. - Explicitly drop
verifyDepsBeforeRunsupport fornodeLinker: pnp. CombiningverifyDepsBeforeRunandnodeLinker: pnpwill now print a warning.
v10.8.1
Patch Changes
- Removed bright white highlighting, which didn't look good on some light themes #β9389.
- If there is no pnpm related configuration in
package.json,onlyBuiltDependencieswill be written topnpm-workspace.yamlfile #β9404.
v10.8.0
Minor Changes
-
Experimental. A new hook is supported for updating configuration settings. The hook can be provided via
.pnpmfile.cjs. For example:module.exports = { hooks: { updateConfig: (config) => ({ ...config, nodeLinker: "hoisted", }), }, }; -
Now you can use the
pnpm addcommand with the--configflag to install new configurational dependencies #β9377.
Patch Changes
- Do not hang indefinitely, when there is a glob that starts with
!/inpnpm-workspace.yaml. This fixes a regression introduced by #β9169. pnpm audit --fixshould update the overrides inpnpm-workspace.yaml.pnpm linkshould update overrides inpnpm-workspace.yaml, not inpackage.json#β9365.
v10.7.1: pnpm 10.7.1
Patch Changes
pnpm config setshould convert the settings to their correct type before adding them topnpm-workspace.yaml#β9355.pnpm config getshould read auth related settings via npm CLI #β9345.- Replace leading
~/in a path in.npmrcwith the home directory #β9217.
Platinum Sponsors
|
|
|
|
Gold Sponsors
|
|
|
|
|
|
|
|
|
|
|
|
v10.7.0
Minor Changes
-
pnpm config getandlistalso show settings set inpnpm-workspace.yamlfiles #β9316. -
It should be possible to use env variables in
pnpm-workspace.yamlsetting names and value. -
Add an ability to patch dependencies by version ranges. Exact versions override version ranges, which in turn override name-only patches. Version range
*is the same as name-only, except that patch application failure will not be ignored.For example:
patchedDependencies: foo: patches/foo-1.patch foo@^2.0.0: patches/foo-2.patch [email protected]: patches/foo-3.patchThe above configuration would apply
patches/foo-3.patchto[email protected],patches/foo-2.patchto allfooversions which satisfy^2.0.0except2.1.0, andpatches/foo-1.patchto the remainingfooversions.[!WARNING] The version ranges should not overlap. If you want to specialize a sub range, make sure to exclude it from the other keys. For example:
# pnpm-workspace.yaml patchedDependencies: # the specialized sub range '[email protected]': patches/foo.2.2.0-2.8.0.patch # the more general patch, excluding the sub range above 'foo@>=2.0.0 <2.2.0 || >2.8.0': 'patches/foo.gte2.patchIn most cases, however, it's sufficient to just define an exact version to override the range.
-
pnpm config set --location=projectsaves the setting to apnpm-workspace.yamlfile if no.npmrcfile is present in the directory #β9316. -
Rename
pnpm.allowNonAppliedPatchestopnpm.allowUnusedPatches. The old name is still supported but it would print a deprecation warning message. -
Add
pnpm.ignorePatchFailuresto manage whether pnpm would ignore patch application failures.If
ignorePatchFailuresis not set, pnpm would throw an error when patches with exact versions or version ranges fail to apply, and it would ignore failures from name-only patches.If
ignorePatchFailuresis explicitly set tofalse, pnpm would throw an error when any type of patch fails to apply.If
ignorePatchFailuresis explicitly set totrue, pnpm would print a warning when any type of patch fails to apply.
Patch Changes
- Remove dependency paths from audit output to prevent out-of-memory errors #β9280.
v10.6.5
v10.6.4: pnpm 10.6.4
Patch Changes
- Fix
pnpm dlxwith--allow-buildflag #β9263. - Invalid Node.js version in
use-node-versionshould not cause pnpm itself to break #β9276. - The max amount of workers running for linking packages from the store has been reduced to 4 to achieve optimal results #β9286. The workers are performing many file system operations, so increasing the number of CPUs doesn't help performance after some point.
Platinum Sponsors
|
|
|
|
Gold Sponsors
|
|
|
|
|
|
|
|
|
|
|
|
v10.6.3
Patch Changes
-
pnpm install --prod=falseshould not crash, when executed in a project with apnpm-workspace.yamlfile #β9233. This fixes regression introduced via #β9211. -
Add the missing
node-optionsconfig torecursive run#β9180. -
Removed a branching code path that only executed when
dedupe-peer-dependents=false. We believe this internal refactor will not result in behavior changes, but we expect it to make future pnpm versions behave more consistently for projects that overridededupe-peer-dependentsto false. There should be less unique bugs from turning offdedupe-peer-dependents.See details in #β9259.
v10.6.2
Patch Changes
pnpm self-updateshould always update the version in thepackageManagerfield ofpackage.json.- Fix running pnpm CLI from pnpm CLI on Windows when the CLI is bundled to an executable #β8971.
pnpm patch-commitwill now use the same filesystem as the store directory to compare and create patch files.- Don't show info output when
--loglevel=erroris used. peerDependencyRulesshould be set inpnpm-workspace.yamlto take effect.
v10.6.1
Patch Changes
- The pnpm CLI process should not stay hanging, when
--silentreporting is used. - When
--loglevelis set toerror, don't show installation summary, execution time, and big tarball download progress. - Don't ignore pnpm.patchedDependencies from
package.json#β9226. - When executing the
approve-buildscommand, if package.json containsonlyBuiltDependenciesorignoredBuiltDependencies, the selected dependency package will continue to be written intopackage.json. - When a package version cannot be found in the package metadata, print the registry from which the package was fetched.
v10.6.0
Minor Changes
-
pnpm-workspace.yamlcan now hold all the settings that.npmrcaccepts. The settings should use camelCase #β9211.pnpm-workspace.yamlexample:verifyDepsBeforeRun: install optimisticRepeatInstall: true publicHoistPattern: - "*types*" - "!@​types/react" -
Projects using a
file:dependency on a local tarball file (i.e..tgz,.tar.gz,.tar) will see a performance improvement during installation. Previously, using afile:dependency on a tarball caused the lockfile resolution step to always run. The lockfile will now be considered up-to-date if the tarball is unchanged.
Patch Changes
pnpm self-updateshould not leave a directory with a broken pnpm installation if the installation fails.fast-globreplace withtinyglobbyto reduce the size of the pnpm CLI dependencies #β9169.pnpm deployshould not remove fields from the deployed package'spackage.jsonfile #β9215.pnpm self-updateshould not read the pnpm settings from thepackage.jsonfile in the current working directory.- Fix
pnpm deploycreating apackage.jsonwithout theimportsandlicensefield #β9193. pnpm update -ishould list only packages that have newer versions #β9206.- Fix a bug causing entries in the
catalogssection of thepnpm-lock.yamlfile to be removed whendedupe-peer-dependents=falseon a filtered install. #β9112
v10.5.2
Patch Changes
- The
pnpm config setcommand should change the global.npmrcfile by default. This was a regression introduced by #β9151 and shipped in pnpm v10.5.0.
v10.5.1
Patch Changes
- Throw an error message if a
pnpm-workspaces.yamlorpnpm-workspaces.ymlfile is found instead of apnpm-workspace.yaml#β9170. - Fix the update of
pnpm-workspace.yamlby thepnpm approve-buildscommand #β9168. - Normalize generated link paths in
package.json#β9163 - Specifying
overridesinpnpm-workspace.yamlshould work. pnpm dlxshould ignore settings from thepackage.jsonfile in the current working directory #β9178.
v10.5.0
Minor Changes
-
Allow to set the "pnpm" settings from
package.jsonvia thepnpm-workspace.yamlfile #β9121. -
Added support for automatically syncing files of injected workspace packages after
pnpm run#β9081. Use thesync-injected-deps-after-scriptssetting to specify which scripts build the workspace package. This tells pnpm when syncing is needed. The setting should be defined in a.npmrcfile at the root of the workspace. Example:sync-injected-deps-after-scripts[]=compile -
The
packagesfield inpnpm-workspace.yamlbecame optional.
Patch Changes
pnpm linkwith no parameters should work as if--globalis specified #β9151.- Allow scope registry CLI option without
--config.prefix such as--@​scope:registry=https://scope.example.com/npm#β9089. pnpm link <path>should calculate relative path from the root of the workspace directory #β9132.- Fix a bug causing catalog snapshots to be removed from the
pnpm-lock.yamlfile when using--fix-lockfileand--filter. #β8639 - Fix a bug causing catalog protocol dependencies to not re-resolve on a filtered install #β8638.
v10.4.1
Patch Changes
- Throws an error when the value provided by the
--allow-buildoption overlaps with thepnpm.ignoredBuildDependencieslist #β9105. - Print pnpm's version after the execution time at the end of the console output.
- Print warning about ignored builds of dependencies on repeat install #β9106.
- Setting
init-package-managershould work.
v10.4.0
Minor Changes
-
pnpm approve-builds --globalworks now for allowing dependencies of globally installed packages to run postinstall scripts. -
The
pnpm addcommand now supports a new flag,--allow-build, which allows building the specified dependencies. For instance, if you want to install a package calledbundlethat hasesbuildas a dependency and want to allowesbuildto run postinstall scripts, you can run:pnpm --allow-build=esbuild add bundleThis will run
esbuild's postinstall script and also add it to thepnpm.onlyBuiltDependenciesfield ofpackage.json. So,esbuildwill always be allowed to run its scripts in the future.Related PR: #β9086.
-
The
pnpm initcommand adds apackageManagerfield with the current version of pnpm CLI #β9069. To disable this behaviour, set theinit-package-managersetting tofalse.
Patch Changes
pnpm approve-buildsshould work after two consecutivepnpm installruns #β9083.- Fix instruction for updating pnpm with corepack #β9101.
- The pnpm version specified by
packageManagercannot start withv.
v10.3.0
Minor Changes
- Added a new setting called
strict-dep-builds. When enabled, the installation will exit with a non-zero exit code if any dependencies have unreviewed build scripts (aka postinstall scripts) #β9071.
Patch Changes
- Fix a false negative of
verify-deps-before-runafterpnpm install --production|--no-optional#β9019. - Print the warning about blocked installation scripts at the end of the installation output and make it more prominent.
v10.2.1
Patch Changes
- Don't read a package from side-effects cache if it isn't allowed to be built #β9042.
pnpm approve-buildsshould work, when executed from a subdirectory of a workspace #β9042.pnpm deploy --legacyshould work without injected dependencies.- Add information about how to deploy without "injected dependencies" to the "pnpm deploy" error message.
v10.2.0
Minor Changes
-
Packages executed via
pnpm dlxandpnpm createare allowed to be built (run postinstall scripts) by default.If the packages executed by
dlxorcreatehave dependencies that have to be built, they should be listed via the--allow-buildflag. For instance, if you want to run a package calledbundlethat hasesbuildin dependencies and want to allowesbuildto run postinstall scripts, run:pnpm --allow-build=esbuild dlx bundleRelated PR: #β9026.
Patch Changes
- Quote args for scripts with shell-quote to support new lines (on POSIX only) #β8980.
- Fix a bug in which
pnpm deployfails to read the correctprojectIdwhen the deploy source is the same as the workspace directory #β9001. - Proxy settings should be respected, when resolving Git-hosted dependencies #β6530.
- Prevent
overridesfrom adding invalid version ranges topeerDependenciesby keeping thepeerDependenciesand overriding them with proddependencies#β8978. - Sort the package names in the "pnpm.onlyBuiltDependencies" list saved by
pnpm approve-builds.
v10.1.0
Minor Changes
- Added a new command for printing the list of dependencies with ignored build scripts:
pnpm ignored-builds#β8963. - Added a new command for approving dependencies for running scripts during installation:
pnpm approve-builds#β8963. - Added a new setting called
optimistic-repeat-install. When enabled, a fast check will be performed before proceeding to installation. This way a repeat install or an install on a project with everything up-to-date becomes a lot faster. But some edge cases might arise, so we keep it disabled by default for now #β8977. - Added a new field "pnpm.ignoredBuiltDependencies" for explicitly listing packages that should not be built. When a package is in the list, pnpm will not print an info message about that package not being built #β8935.
Patch Changes
- Verify that the package name is valid when executing the publish command.
- When running
pnpm install, thepreprepareandpostpreparescripts of the project should be executed #β8989. - Allow
workspace:andcatalog:to be part of wider version range inpeerDependencies. pnpm deployshould inherit thepnpmobject from the rootpackage.json#β8991.- Make sure that the deletion of a
node_modulesin a sub-project of a monorepo is detected as out-of-date #β8959. - Fix infinite loop caused by lifecycle scripts using
pnpmto execute other scripts duringpnpm installwithverify-deps-before-run=install#β8954. - Replace
strip-ansiwith the built-inutil.stripVTControlCharacters#β9009. - Do not print patched dependencies as ignored dependencies that require a build #β8952.
v10.0.0
Major Changes
-
Lifecycle scripts of dependencies are not executed during installation by default! This is a breaking change aimed at increasing security. In order to allow lifecycle scripts of specific dependencies, they should be listed in the
pnpm.onlyBuiltDependenciesfield ofpackage.json#β8897. For example:{ "pnpm": { "onlyBuiltDependencies": ["fsevents"] } } -
pnpm linkbehavior updated:The
pnpm linkcommand now adds overrides to the rootpackage.json.- In a workspace: The override is added to the root of the workspace, linking the dependency to all projects in the workspace.
- Global linking: To link a package globally, run
pnpm linkfrom the packageβs directory. Previously, you needed to usepnpm link -g. Related PR: #β8653
-
Secure hashing with SHA256:
Various hashing algorithms have been updated to SHA256 for enhanced security and consistency:
- Long paths inside
node_modules/.pnpmare now hashed with SHA256. - Long peer dependency hashes in the lockfile now use SHA256 instead of MD5. (This affects very few users since these are only used for long keys.)
- The hash stored in the
packageExtensionsChecksumfield ofpnpm-lock.yamlis now SHA256. - The side effects cache keys now use SHA256.
- The pnpmfile checksum in the lockfile now uses SHA256 (#β8530).
- Long paths inside
-
Configuration updates:
-
manage-package-manager-versions: enabled by default. pnpm now manages its own version based on thepackageManagerfield inpackage.jsonby default. -
public-hoist-pattern: nothing is hoisted by default. Packages containingeslintorprettierin their name are no longer hoisted to the root ofnode_modules. Related Issue: #β8378 -
Upgraded
@yarnpkg/extensionsto v2.0.3. This may alter your lockfile. -
virtual-store-dir-max-length: the default value on Windows has been reduced to 60 characters. -
Reduced environment variables for scripts: During script execution, fewer
npm_package_*environment variables are set. Onlyname,version,bin,engines, andconfigremain. Related Issue: #β8552 -
All dependencies are now installed even if
NODE_ENV=production. Related Issue: #β8827
-
-
Changes to the global store:
-
Store version bumped to v10.
-
Some registries allow identical content to be published under different package names or versions. To accommodate this, index files in the store are now stored using both the content hash and package identifier.
This approach ensures that we can:
-
More efficient side effects indexing. The structure of index files in the store has changed. Side effects are now tracked more efficiently by listing only file differences rather than all files. Related PR: #β8636
-
A new
indexdirectory stores package content mappings. Previously, these files were infiles.
-
-
Other breaking changes:
- The
#character is now escaped in directory names withinnode_modules/.pnpm. Related PR: #β8557 - Running
pnpm add --global pnpmorpnpm add --global @​pnpm/exenow fails with an error message, directing you to usepnpm self-updateinstead. Related PR: #β8728 - Dependencies added via a URL now record the final resolved URL in the lockfile, ensuring that any redirects are fully captured. Related Issue: #β8833
- The
pnpm deploycommand now only works in workspaces that haveinject-workspace-packages=true. This limitation is introduced to allow us to create a proper lockfile for the deployed project using the workspace lockfile. - Removed conversion from lockfile v6 to v9. If you need v6-to-v9 conversion, use pnpm CLI v9.
pnpm testnow passes all parameters after thetestkeyword directly to the underlying script. This matches the behavior ofpnpm run test. Previously you needed to use the--prefix. Related PR: #β8619
- The
-
node-gypupdated to version 11. -
pnpm deploynow tries creating a dedicated lockfile from a shared lockfile for deployment. It will fallback to deployment without a lockfile if there is no shared lockfile orforce-legacy-deployis set totrue.
Minor Changes
-
Added support for a new type of dependencies called "configurational dependencies". These dependencies are installed before all the other types of dependencies (before "dependencies", "devDependencies", "optionalDependencies").
Configurational dependencies cannot have dependencies of their own or lifecycle scripts. They should be added using exact version and the integrity checksum. Example:
{ "pnpm": { "configDependencies": { "my-configs": "1.0.0+sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==" } } } -
New settings:
-
New
verify-deps-before-runsetting. This setting controls howpnpmchecksnode_modulesbefore running scripts:install: Automatically runpnpm installifnode_modulesis outdated.warn: Print a warning ifnode_modulesis outdated.prompt: Prompt the user to confirm runningpnpm installifnode_modulesis outdated.error: Throw an error ifnode_modulesis outdated.false: Disable dependency checks. Related Issue: #β8585
-
New
inject-workspace-packagessetting enables hard-linking all local workspace dependencies instead of symlinking them. Previously, this could be achieved usingdependenciesMeta[].injected, which remains supported. Related PR: #β8836
-
-
Faster repeat installs:
On repeated installs,
pnpmperforms a quick check to ensurenode_modulesis up to date. Related PR: #β8838 -
pnpm addintegrates with default workspace catalog:When adding a dependency,
pnpm addchecks the default workspace catalog. If the dependency and version requirement match the catalog,pnpm adduses thecatalog:protocol. Without a specified version, it matches the catalogβs version. If it doesnβt match, it falls back to standard behavior. Related Issue: #β8640 -
pnpm dlxnow resolves packages to their exact versions and uses these exact versions for cache keys. This ensurespnpm dlxalways installs the latest requested packages. Related PR: #β8811 -
No
node_modulesvalidation on certain commands. Commands that should not modifynode_modules(e.g.,pnpm install --lockfile-only) no longer validate or purgenode_modules. Related PR: #β8657
Configuration
π Schedule: Branch creation - "before 8am on wednesday" in timezone Asia/Shanghai, Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about these updates again.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.