corepack icon indicating copy to clipboard operation
corepack copied to clipboard

Corepack and Yarn isolation in an nvm-managed environment

Open marlondecol opened this issue 1 year ago • 1 comments

A few hours ago I opened an issue in the nvm project repository to discuss a way to install package managers — in my case, Yarn — through Corepack separately for each version of Node.js. As I was told there, this should be discussed here, so I paraphrase my issue below.

My system has only two versions of Node.js installed and managed by nvm: the default is 20, which I use for almost all of my projects; the other one is 16. There is no other version of Node.js on this system, regardless of how it is installed. Both only have Corepack and NPM installed globally, each at the latest supported version.

The issue I come to discuss is that Corepack does not activate Yarn in isolation, i.e., every time a certain version of Yarn is activated in one of the Node.js versions, it is also activated in the other version. Therefore, I cannot, for example, use the latest version of Yarn on Node.js 20, as it is not compatible with 16.

Is there a way to isolate Yarn? Otherwise, wouldn't it make sense to implement it?

marlondecol avatar May 28 '24 20:05 marlondecol

Same issue here.

I was working on a project where .nvmrc set Node.js version to 22, and used Corepack to activate yarn. When I switch to another project, despite nvm auto detected .nvmrc and set Node.js version to 14, running yarn still executed ~/.nvm/versions/node/v22.11.0/lib/node_modules/corepack/dist/yarn.js, which contains nullish coalescing syntax and doesn't work with Node.js 14.

SevenOutman avatar Dec 02 '24 10:12 SevenOutman