Aller au contenu

Paquets tiers : npm, yarn

Bien que plusieurs systèmes de distribution de modules Javascript aient coexisté, l'un d'entre eux s'est aujourd'hui imposé, npm. Deux clients en ligne de commande permettent de l'utiliser, npm et yarn.

Note : bower n'est plus maintenu, mieux vaut ne pas l'utiliser si vous le rencontrez dans un tutoriel.

  • Les modules (ou paquets) peuvent être installés globalement (déconseillé sauf exceptions), ou au niveau d'un projet.

npm : "Node Package Manager"

npm est le client officiel du dépôt npm.

Le mode de fonctionnement typique dans un projet est le suivant :

  • Initialiser le projet à l'aide de npm init, qui crée le fichier package.json.
  • Ajouter un ou plusieurs modules : npm install {nom du module}.
  • Le module est installé dans le répertoire node_modules/.
  • Le module est ajouté au fichier package.json.
  • Le module ainsi que ses dépendances, sont ajoutés au fichier package-lock.json (ne pas le modifier à la main).

Note : le répertoire node_modules/ peut contenir beaucoup de modules en double, triple, etc., c'est un format très inefficace, et qui gaspille beaucoup d'espace.

Les fichiers package.json et package-lock.json sont mis sous Git, mais pas le répertoire node_modules/.

Note : package-lock.json et node_modules/ peuvent être supprimés et recréés facilement en cas de besoin.

A partir d'un fichier package.json, il suffit de taper npm install pour tout réinstaller.

Yarn v1

yarn est un client alternatif, généralement plus rapide que npm, parce qu'il charge les modules en parallèle.

La syntaxe des commandes est un peu différente : * yarn add {nom du module} au lieu de npm install {nom du module} * yarn remove {nom du module} au lieu de npm uninstall {nom du module} * yarn au lieu de npm install * ...

Il utilise le même fichier package.json que npm, mais crée un fichier yarn.lock, remplacement de package-lock.json.

Attention ! Ne pas mélanger npm et yarn dans un même projet, parce qu'ils utilisent des fichiers "lock" différents, par conséquent l'un ne peut pas savoir ce que l'autre a installé.

Yarn "v2" (en réalité, v4)

Une version plus puissante de Yarn existe, Yarn "v2". Elle reste relativement confidentielle, probablement parce que la majorité des utilisateurs ignorent son existence, et/ou ne se donnent pas la peine de faire la mise à jour.

Parmi ses avantages, un format de stockage expérimental plus efficace que node_modules, un plugin de mise à jour interactive, et la possibilité de créer des "workspaces" pour travailler simultanément sur plusieurs projets Node.

Installation :

yarn set version berry

Note : la présence de Yarn "v2" dans un projet est matérialisée par la présence du fichier .yarnrc.yml, ainsi que celle du répertoire .yarn. Il est facile de repasser à Yarn v1, voire à npm.