berry
berry copied to clipboard
[Bug]: yarn adds packageManager field even if standard devEngines is defined during update
Self-service
- [ ] I'd be willing to implement a fix
Describe the bug
yarn adds packageManager field even if standard devEngines is defined during update
To reproduce
$ npm i -g corepack
$ echo '{"devEngines": {"packageManager": {"name": "yarn", "version": "4.7.0"} } }' > package.json
$ yarn --version
4.7.0
$ yarn set version 4.8.0
➤ YN0000: Done in 0s 2ms
$ yarn
"packageManager" field is set to "[email protected]" which does not match the value defined in "devEngines.packageManager" for "yarn" of "4.7.0"
Observed
packageManager field is set to correct version of yarn, while devEngines.packageManager is not updated
$ cat package.json
{
"devEngines": {
"packageManager": {
"name": "yarn",
"version": "4.7.0"
}
},
"packageManager": "[email protected]"
}
Expected
packageManager field is not added, and devEngines.packageManager.version is update to 4.8.0
$ cat package.json
{
"devEngines": {
"packageManager": {
"name": "yarn",
"version": "4.8.0"
}
}
}
Environment
System:
OS: macOS 15.3.1
CPU: (8) arm64 Apple M1 Pro
Binaries:
Node: 22.14.0 - /private/var/folders/42/54jl1_3x4hz06cf7bc_kzd4h0000gn/T/xfs-050f7851/node
Yarn: 4.8.0 - /private/var/folders/42/54jl1_3x4hz06cf7bc_kzd4h0000gn/T/xfs-050f7851/yarn
npm: 10.9.2 - ~/.local/state/fnm_multishells/19028_1743286080122/bin/npm
Additional context
No response
Fixed in my project by manually updating devEngines.packageManager.version, and removing packageManager field Commit: https://github.com/aws/aws-sdk-js-codemod/pull/984/commits/0a36eff00f11f539188aafe8b67fb828167c813c in https://github.com/aws/aws-sdk-js-codemod/pull/984
I noticed this issue again during yarn version update. It'll be helpful is yarn updates version in devEngines field, if the project already uses it.