Migrer depuis npm

Migrer depuis npm devrait être un processus relativement facile pour la plupart des utilisateurs. Yarn peut utiliser en entrée le même format de package.json que npm et installer n’importe quel package depuis le registre de npm.

Si vous voulez essayer Yarn sur un projet npm existant, lancez la commande suivante :

yarn

Cela s’appliquera sur votre répertoire node_modules en utilisant l’algorithme de résolution de Yarn, compatible avec l’algorithme de résolution des modules de node.js.

Si vous obtenez une erreur, cherchez un problème similaire existant ou bien créez-en un nouveau sur le gestionnaire de bugs de Yarn.

Lorsque vous lancez yarn ou yarn add <package>, Yarn va générer un fichier yarn.lock dans le répertoire racine de votre package. Vous n’avez pas besoin de lire ou de comprendre ce fichier - rajoutez-le simplement dans votre gestionnaire de code source. Quand d’autres personnes commenceront à utiliser Yarn à la place de npm, le fichier yarn.lock s’assurera qu’ils récupèrent précisément les même dépendances que vous.

Dans la plupart des cas, exécuter yarn ou yarn add la première fois fonctionnera. Dans certains cas, les informations dans le fichier package.json ne sera pas assez explicite pour éliminer certaines dépendances et la méthode déterministe utilisée par Yarn pour choisir les dépendances mènera à des conflits de dépendances. Cela survient souvent dans les gros projets ou parfois npm install ne fonctionne pas et où les développeurs se retrouvent à fréquemment supprimer leur répertoire node_modules pour tout rebuilder. Dans ce cas, essayez d’utiliser npm pour rendre les versions de vos dépendances plus explicites, avant de basculer à Yarn.

D’autres développeurs de votre projet peuvent continuer à utiliser npm, nous n’êtes pas obligé de convertir tout le monde en même temps. Les développeurs utilisant yarn auront tous la même configuration et les développeurs utilisant npm pourront avoir des configurations légèrement différentes les uns des autres, ce qui est le comportement voulu de npm.

Plus tard, si vous décidez que Yarn n’est pas pour vous, vous pouvez juste revenir à l’utilisation de npm sans faire de changement particulier. Vous pourrez alors supprimer votre vieux fichier yarn.lock si plus personne dans votre projet n’utilise Yarn, mais cela n’est pas obligatoire.

Si vous utilisez actuellement un fichier npm-shrinkwrap.json, sachez que vous pouvez avoir un jeu de dépendances différent. Yarn ne supporte pas les fichiers npm shrinkwrap car ils ne contiennent pas suffisamment d’informations pour être gérés par l’algorithme déterministe de Yarn. Si vous utilisez un fichier shrinkwrap, il serait peut-être plus facile de convertir à Yarn tous les utilisateurs de votre projet en même temps. Supprimez simplement votre fichier npm-shrinkwrap.json et vérifiez le fichier yarn.lock fraîchement créé.

Comparaison des commandes CLI

npm Yarn
npm install yarn install
(N/A) yarn install --flat
(N/A) yarn install --har
(N/A) yarn install --no-lockfile
(N/A) yarn install --pure-lockfile
npm install [package] (N/A)
npm install --save [package] yarn add [package]
npm install --save-dev [package] yarn add [package] [--dev/-D]
(N/A) yarn add [package] [--peer/-P]
npm install --save-optional [package] yarn add [package] [--optional/-O]
npm install --save-exact [package] yarn add [package] [--exact/-E]
(N/A) yarn add [package] [--tilde/-T]
npm install --global [package] yarn global add [package]
npm update --global                       yarn global upgrade                    
npm rebuild yarn install --force
npm uninstall [package] (N/A)
npm uninstall --save [package] yarn remove [package]
npm uninstall --save-dev [package] yarn remove [package]
npm uninstall --save-optional [package] yarn remove [package]
npm cache clean yarn cache clean
rm -rf node_modules && npm install yarn upgrade