javascript

Forcing the usage of yarn (and at a specific version)

People and organizations often have preferences for a specific package manager. At work, we decided to use Yarn due to emoji support (jk) but how to keep everybody using Yarn? 

We can use the preinstall hook ↗︎ to check if the user run npm installor yarn install. Here is one example:

package.json
"scripts": {
  "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('You must use Yarn to install, not NPM')\"",
}

If you run npm install:

Terminal

If you want to ignore the checking (CI environment for instance), use the --ignore-scripts option: 

npm install --ignore-scripts

Moreover, you can use the engines option ↗︎ of NPM to force a specific version of Node, and/or Yarn. Here is an example:

package.json
"engines": {
  "yarn": ">1.19.1",
  "node": ">12"
},

Terminal

Interactions

Webmentions

Like this content? Buy me a coffeeor share around:

0 Likes

0 Replies & Shares