Yarn Berry is the codename for Yarn version 2 and 3. It worked so differently to Yarn 1 that the team ended up giving it a totally different name. The main difference is that Yarn Berry uses a feature called PnP(Plug'n'Play) to install and resolve dependencies.
The big impact
There are no
node_modules in your project directory.
You can read more about why there are no
node_modules in the Yarn PnP documentation.
But it boils down to yarn shifting responsibilty of resolving dependencies from NodeJS to the package manager.
Webstorm does have existing support for PnP when you're coding 🎉 but as of January 2020,
it doesn't know where to look for the ESlint plugin when you've got no
We need to "unplug" ESLint, which means that the package gets unzipped in your
.yarn directory and put into an
The command for this is
yarn unplug eslint
Where'd it go?
To find out where the eslint binary now lives, we run
yarn bin eslint. This will give us the fully qualified path to the eslint binary
[path to your project]/.yarn/unplugged/eslint-npm-8.6.0-f5ecfc9f69/node_modules/eslint/bin/eslint.js
We want to remove
/bin/eslint.js from the end of that path and copy that to your clipboard
Get those settings right
Now we can go to the Webstorm settings Cmd+, and navigate to the ESLint section
Manual ESLint configuration and paste the previously copied path into the
ESLint package field
Webstorm is now ready to shout at you when you've forgotten a semicolon. 📣