DEV Community

vblaha
vblaha

Posted on • Updated on

yarn it, I'm migrating!

img
I recently assisted migration on a project from npm to Yarn, and it was as easy as typing yarn into the terminal.
Yarn is package management tool that creates modules (blocks of code from other developers that you load into your program) through terminal commands, very similar to the way you would with npm (Node.js package manager). It does this by using a lockfile to ensure that all libraries match across users (a common complaint from the npm client user is that multiple versions of dependencies can exist between users, and accountability goes down, resulting in a 'works on my machine' attitude). So with Yarn, you always know you're getting the same thing on every development machine.

You can migrate from npm to yarn by navigating to your project folder in the terminal and using the following comparison chart to customize the package you are working to build.

npm (v5)                            Yarn

npm install                         yarn install
Enter fullscreen mode Exit fullscreen mode
(N/A)                                   yarn install --flat
Enter fullscreen mode Exit fullscreen mode

Flat mode is a unique feature that resolves mismatching versions of dependencies, creating a single version-this can help with code cleanup and deletion of duplicates.

(N/A)                                   yarn install --har
npm install --no-package-lock           yarn install --no-lockfile
(N/A)                                   yarn install --pure-lockfile
npm install [package] --save            yarn add [package]
npm install [package] --save-dev        yarn add [package] --dev
(N/A)                                   yarn add [package] --peer
npm install [package] --save-optional   yarn add [package] --optional
npm install [package] --save-exact      yarn add [package] --exact
(N/A)                                   yarn add [package] --tilde
npm install [package] --global          yarn global add [package]
npm update --global                     yarn global upgrade  
Enter fullscreen mode Exit fullscreen mode

The above set of commands will install/add dependencies and create a .lock file based on the customizations you choose.

npm rebuild                         yarn add --force
npm uninstall [package]                 yarn remove [package]
Enter fullscreen mode Exit fullscreen mode

The remove package command can be useful. If you are working in an environment that has multiple package management tools running, you will be in pain. Try to stick to one.

npm run test                            yarn test
Enter fullscreen mode Exit fullscreen mode

Yarn's lockfile system creates a local cached copy that facilitates offline package installs. This is helpful because you can install your npm packages without an internet connection. In Yarn, your tests will pass even when npm goes down!

These are just a few basic concepts of the Yarn system. For full documentation, visit the Yarn CLI docs. While you may try Yarn and find it's not the best fit, it is a great tool that helps drive innovation. As always, I welcome questions, feedback and room for improvement. Thanks for reading!

Oldest comments (6)

Collapse
 
deciduously profile image
Ben Lovy

This is one holy war I'm happy to take a firm stand on. NPM purists, change my mind? Thus far, yarn has felt strictly superior.

Collapse
 
jeroka profile image
Esteban Rocha • Edited

Thank you, I have seen yarn all over the place and this post just turned out my curiosity. I had already migrated my projects to it and damnn! It's so much better than old NPM! fast as hell too :)

Collapse
 
zkochan profile image
Zoltan Kochan

There is also pnpm.

Collapse
 
vblaha profile image
vblaha

This looks really interesting!! If I wrote on pnpm, would you review it?

Collapse
 
zkochan profile image
Zoltan Kochan

Sure

Collapse
 
firzatullahd profile image
Firzatullah Dwiko Ramadhan

when migrating to yarn, do we need to uninstall global packages we installed with npm?