Description
- I'd be willing to implement this feature (contributing guide)
- This feature is important to have in this repository; a contrib plugin wouldn't do
Describe the user story
Yarn recommends using experimental corepack to manage yarn versions https://yarnpkg.com/getting-started/install
At the time of writing, Node.js ships corepack which allows pinning the packageManager field in package.json. It's being used in at least tens of thousands of applications searchable in public code.
There has been asks to make corepack stable since May 2022 nodejs/corepack#104
The PR to enable yarn/pnpm corepack binaries by default in nodejs/node#51886, has moved from most approvals to most declines. There's an open PR to remove corepack too at nodejs/node#51981
I'm a very happy corepack+yarn user. I use it all the yarn modern projects I'm primary author of, like https://github.com/aws/aws-sdk-js-codemod, and have got consensus to use corepack in open source packages I maintain with other folks, like https://github.com/facebook/jscodeshift. I also closely monitor/participate in requests to enable corepack in other projects, like GitHub action to setup node in actions/setup-node#531
I'll very be sad when (and if) Node.js removes corepack in future, and have provided a wishlist to package-maintenance team to reduce the impact on ecosystem in nodejs/package-maintenance#609. If corepack can handle package-maintenance team specification, currently called devEngines
, and if that helps to get it stable in Node.js core, that would be awesome.
Describe the solution you'd like
Provide some alternative to Node.js experimental corepack to manage yarn versions.
It can be as simple as recommending yarn users to install corepack from npm instead of using the Node.js provided one. This is feasible if corepack maintainers, many of whom help maintain yarn too, plan to continue developing it in case it's removed from Node.js core.
Or it can be like pnpm https://github.com/pnpm/pnpm/releases/tag/v9.7.0, which released a configuration manage-package-manager-versions
to manage it's own versions instead of depending on corepack. It may be nice to have similar configuration for yarn users instead of depending on corepack.
Describe the drawbacks of your solution
- Install corepack from npm: Dependency on npm to install corepack.
- The Node.js core decided in March'24 that removing npm is a non-goal with 17 approvals doc: state that removing npm is a non-goal nodejs/node#51951, so this wouldn't a problem.
- Configuration: Requiring developers to install specific yarn version which manages itself.
Describe alternatives you've considered
- Following up on https://github.com/nodejs/corepack repo on what the maintainers plan to do there.
- Following up on
devEngines
specification in feat: add proposal for binary management nodejs/package-maintenance#594, and who plans to implement it. - Switching to a different package manager, like pnpm v9.7.0, which manages it's own version by referring
packageManager
field introduced by corepack in existing applications.