-
Notifications
You must be signed in to change notification settings - Fork 814
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update pnpm to v10 #41821
Update pnpm to v10 #41821
Conversation
|
Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.
Interested in more tips and information?
|
Code Coverage SummaryThis PR did not change code coverage! That could be good or bad, depending on the situation. Everything covered before, and still is? Great! Nothing was covered before? Not so great. 🤷 |
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
jetpack build --all
worked fine for me with no problems, however the link
command has failed:
$ jetpack cli link
❯ Linking the CLI
✖ Enabling global access to the CLI
→ ERR_PNPM_LINK_BAD_PARAMS You must provide a parameter
Error: Command failed with exit code 1: pnpm link
ERR_PNPM_LINK_BAD_PARAMS You must provide a parameter
at makeError (file:///home/zinigor/workspace/jetpack/node_modules/.pnpm/[email protected]/node_modules/execa/lib/error.js:59:11)
at handlePromise (file:///home/zinigor/workspace/jetpack/node_modules/.pnpm/[email protected]/node_modules/execa/index.js:119:26)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5) {
shortMessage: 'Command failed with exit code 1: pnpm link',
command: 'pnpm link',
escapedCommand: 'pnpm link',
exitCode: 1,
signal: undefined,
signalDescription: undefined,
stdout: ' ERR_PNPM_LINK_BAD_PARAMS You must provide a parameter',
stderr: '',
failed: true,
timedOut: false,
isCanceled: false,
killed: false,
context: [Object: null prototype] {}
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, my bad, I haven't had pnpm
set up properly to be able to link.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Both package.json and .github/versions.sh were updated to use 10.4.0. Is this okay, or should I stick to 10.0.0?
Either way is fine with me, as long as there aren't any important bugfixes (or lock file changes) between 10.0.0 and 10.4.0.
Looks like we may want to do at least 10.3.0 and set strict-dep-builds=true
in .npmrc
to avoid potential confusion if some dep has build scripts that get not-run and then that breaks something.
Looks like there are currently five packages with build scripts being ignored:
core-js
: Looks like it just tries to display a "support me" message. But it seems pnpm hides it anyway. 🤷swiper
: Same, but this one was removed upstream in nolimits4web/swiper@12255cf anyway.svelte-preprocess
: Tries to echo a message about installing other stuff that might be needed. Again, it seems pnpm hides it.@swc/core
: Tries tonpm install
if certain deps haven't already been installed, ugh.esbuild
: Slightly better than swc, this one tries to manually download a package.
None seem to be required, looks like whatever deps @swc/core
or esbuild
are checking for we already get installed.
Other new configs we may want to look at:
verify-deps-before-run
might be set towarn
,prompt
, orerror
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems ok. One suggestion to consider.
Also you'll probably want to have a P2 post ready to go announcing the update. See pdWQjU-15r-p2 for the last one.
package.json
Outdated
"pnpm": { | ||
"patchedDependencies": { | ||
"@wordpress/dataviews": ".pnpm-patches/@[email protected]" | ||
} | ||
}, | ||
"onlyBuiltDependencies": [ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since we don't seem to actually need any of these, I might do
"onlyBuiltDependencies": [ | |
"ignoredBuiltDependencies": [ |
instead. At the least we might drop core-js
, svlte-preprocess
, and swiper
in there since their builds do nothing useful.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I was hoping to do this, but when I ran it locally (with either ignoredBuiltDependencies
or neverBuiltDependencies
) I was still getting the ERR_PNPM_IGNORED_BUILDS
error, and I didn't see any support for overrides in a brief skim of the source (pnpm/pnpm#9071). Does it work for you? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, seems to work for me with ignoredBuiltDependencies
and 10.4.0 or 10.4.1.
I had a typo earlier, copied from a typo in https://github.com/pnpm/pnpm/releases/tag/v10.4.1 😀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like it was my end (surprise!); clearing node_modules
fixed it.
I modified two things after Renovate:
package.json
and.github/versions.sh
were updated to use 10.4.0. Is this okay, or should I stick to 10.0.0? 939d785pnpm link
is automatically global now: ac3c8ef.npmrc
:strict-dep-builds = true
verify-deps-before-run = warn
.pnpm.ignoredBuiltDependencies
.This PR contains the following updates:
9.15.0
->10.4.0
^9.15.0
->^10.0.0
Release Notes
pnpm/pnpm (pnpm)
v10.4.0
Compare Source
Minor Changes
pnpm approve-builds --global
works now for allowing dependencies of globally installed packages to run postinstall scripts.The
pnpm add
command now supports a new flag,--allow-build
, which allows building the specified dependencies. For instance, if you want to install a package calledbundle
that hasesbuild
as a dependency and want to allowesbuild
to run postinstall scripts, you can run:This will run
esbuild
's postinstall script and also add it to thepnpm.onlyBuiltDependencies
field ofpackage.json
. So,esbuild
will always be allowed to run its scripts in the future.Related PR: #9086.
The
pnpm init
command adds apackageManager
field with the current version of pnpm CLI #9069. To disable this behaviour, set theinit-package-manager
setting tofalse
.Patch Changes
pnpm approve-builds
should work after two consecutivepnpm install
runs #9083.packageManager
cannot start withv
.v10.3.0
Compare Source
Minor Changes
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
verify-deps-before-run
afterpnpm install --production|--no-optional
#9019.v10.2.1
Compare Source
Patch Changes
pnpm approve-builds
should work, when executed from a subdirectory of a workspace #9042.pnpm deploy --legacy
should work without injected dependencies.v10.2.0
Compare Source
Minor Changes
Packages executed via
pnpm dlx
andpnpm create
are allowed to be built (run postinstall scripts) by default.If the packages executed by
dlx
orcreate
have dependencies that have to be built, they should be listed via the--allow-build
flag. For instance, if you want to run a package calledbundle
that hasesbuild
in dependencies and want to allowesbuild
to run postinstall scripts, run:Related PR: #9026.
Patch Changes
pnpm deploy
fails to read the correctprojectId
when the deploy source is the same as the workspace directory #9001.overrides
from adding invalid version ranges topeerDependencies
by keeping thepeerDependencies
and overriding them with proddependencies
#8978.pnpm approve-builds
.v10.1.0
Compare Source
Minor Changes
pnpm ignored-builds
#8963.pnpm approve-builds
#8963.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.Patch Changes
pnpm install
, thepreprepare
andpostprepare
scripts of the project should be executed #8989.workspace:
andcatalog:
to be part of wider version range inpeerDependencies
.pnpm deploy
should inherit thepnpm
object from the rootpackage.json
#8991.node_modules
in a sub-project of a monorepo is detected as out-of-date #8959.pnpm
to execute other scripts duringpnpm install
withverify-deps-before-run=install
#8954.strip-ansi
with the built-inutil.stripVTControlCharacters
#9009.v10.0.0
Compare Source
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.onlyBuiltDependencies
field ofpackage.json
#8897. For example:pnpm link
behavior updated:The
pnpm link
command now adds overrides to the rootpackage.json
.pnpm link
from 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:
node_modules/.pnpm
are now hashed with SHA256.packageExtensionsChecksum
field ofpnpm-lock.yaml
is now SHA256.Configuration updates:
manage-package-manager-versions
: enabled by default. pnpm now manages its own version based on thepackageManager
field inpackage.json
by default.public-hoist-pattern
: nothing is hoisted by default. Packages containingeslint
orprettier
in their name are no longer hoisted to the root ofnode_modules
. Related Issue: #8378Upgraded
@yarnpkg/extensions
to 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
, andconfig
remain.Related Issue: #8552
All dependencies are now installed even if
NODE_ENV=production
. Related Issue: #8827Changes 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:
Related PR: #8510
Related Issue: #8204
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
index
directory stores package content mappings. Previously, these files were infiles
.Other breaking changes:
#
character is now escaped in directory names withinnode_modules/.pnpm
.Related PR: #8557
pnpm add --global pnpm
orpnpm add --global @​pnpm/exe
now fails with an error message, directing you to usepnpm self-update
instead.Related PR: #8728
Related Issue: #8833
pnpm deploy
command 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.pnpm test
now passes all parameters after thetest
keyword directly to the underlying script. This matches the behavior ofpnpm run test
. Previously you needed to use the--
prefix.Related PR: #8619
node-gyp
updated to version 11.pnpm deploy
now 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-deploy
is 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:
Related RFC: #8.
Related PR: #8915.
New settings:
New
verify-deps-before-run
setting. This setting controls howpnpm
checksnode_modules
before running scripts:install
: Automatically runpnpm install
ifnode_modules
is outdated.warn
: Print a warning ifnode_modules
is outdated.prompt
: Prompt the user to confirm runningpnpm install
ifnode_modules
is outdated.error
: Throw an error ifnode_modules
is outdated.false
: Disable dependency checks.Related Issue: #8585
New
inject-workspace-packages
setting 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,
pnpm
performs a quick check to ensurenode_modules
is up to date.Related PR: #8838
pnpm add
integrates with default workspace catalog:When adding a dependency,
pnpm add
checks the default workspace catalog. If the dependency and version requirement match the catalog,pnpm add
uses 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 dlx
now resolves packages to their exact versions and uses these exact versions for cache keys. This ensurespnpm dlx
always installs the latest requested packages.Related PR: #8811
No
node_modules
validation on certain commands. Commands that should not modifynode_modules
(e.g.,pnpm install --lockfile-only
) no longer validate or purgenode_modules
.Related PR: #8657
v9.15.5
: pnpm 9.15.5Compare Source
Patch Changes
pnpm install
, thepreprepare
andpostprepare
scripts of the project should be executed #8989.strip-ansi
with the built-inutil.stripVTControlCharacters
#9009.Platinum Sponsors
Gold Sponsors
v9.15.4
: pnpm 9.15.4Compare Source
Patch Changes
pnpm update --latest <pkg>
updates only the specified package, withdedupe-peer-dependents=true
.Platinum Sponsors
Gold Sponsors
v9.15.3
: pnpm 9.15.3Compare Source
Patch Changes
pnpm update --filter <pattern> --latest <pkg>
should only change the specified package for the specified workspace, whendedupe-peer-dependents
is set totrue
#8877..DS_Store
file atpatch-commit
#8922.pnpm patch
is unable to bring back old patch without specifying@version
suffix #8919.Platinum Sponsors
Gold Sponsors
v9.15.2
: pnpm 9.15.2Compare Source
Patch Changes
publish
/pack
error with workspace dependencies with relative paths #8904. It was broken inv9.4.0
(398472c).pnpm patch
on Windows #7546.git ls-remote
works via HTTPS #8906.Platinum Sponsors
Gold Sponsors
v9.15.1
: pnpm 9.15.1Compare Source
Patch Changes
pnpm remove
should not link dependencies from the workspace, whenlink-workspace-packages
is set tofalse
#7674.node_modules
should not fail, when a dependency has itself in its own peer dependencies #8854.Platinum Sponsors
Gold Sponsors
Configuration
📅 Schedule: Branch creation - "* 0-2 1 * *" in timezone UTC, 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.
This PR has been generated by Renovate Bot.