Développeur FullStack & Devops

Notes et mémos techniques

npm

npm Node Package Manager est un gestionnaire de package Nodes qui permet aux développeurs js (front ou back) d’utiliser des outils souvent open source, sans avoir à réinventer la roue à chaque fois.

A savoir que npm utilise le semantic versioning, que l’on retrouve dans le package.json sous forme de numéros de versions précédés de ^ ou de ~ par ex.

  • Patch releases: 1.0 ou 1.0.x ou ~1.0.4
  • Minor releases: 1 ou 1.x ou ^1.0.4
  • Major releases: * ou x

Installation et usage basique

Pour pouvoir utiliser npm (ou yarn) il faut tout d’abord installer NodeJs qui embarque npm (voir nvm pour plus de flexibilité sur les version de Node).

npm -v              # version de npm
npm i [-g] xxx      # installer un package globalement (ex CLI)
npm i xxx           # installe le package xxx et mets à jour le package.json
npm i xxx@version   # installe la version spécifiée

npm ls xxx    # liste toutes les versions installées & les dépendances du package xxx
npm view xxx

npm help [command]  # description de la commande et raccourcis
npm i npm -g        # pour mettre à jour npm

Avancé

Intégration Continue (ou CI)

Pour la ci (intégration continue) il est possible d’utiliser npm ci plutôt que npm i(voici les différences).

L’interet d’utiliser npm ci est qu’il va strictement respecter les numéros de versions présents dans package-lock.json (qui doit exister) et supprime systématiquement le dossier node_modules pour réinstaller toutes les dépendances.

Mises à jour de packages

Les mises à jour des packages s’effectuent par la commande npm update, mais il existe des commandes npm complémentaires :

npm update xxx      # mets à jour le package selon les contraintes semver spécifiés dans le package.json
npm update [--dev]  # Attention: MAJ l'ensemble des packages desuets
npm update -g xxx

npm outdated        # liste les packages désuets (à mettre à jour)
npm outdated -g --depth=0   # idem pour les packages installés globalements

npm rm xxx   # supprime le package du projet

npm outdated

Mise à jour de tous les packages 😅

Depuis npm version 5.0.0, npm update met à jour le fichier package.json avec les nouvelles versions niveau mineur ou patch.

Il existe un outil npm-check-updates, qui nous permet de mettre à jour (dernière version) toutes les dépendances, même en version Majeur de notre package.json.

npm i -g npm-check-updates
npm-check-updates -u # le -u pour Update, va mettre a jour le package.json
npm i                # 🧨💥🤯

voir doc Node.js

Yarn

V1

Yarn est un autre package manager qui utilise les dépôts Node npm, qui a eu un avantage de performance à un époque par rapport à npm.

npm -g yarn # installer ou mettre à jour Yarn
yarn upgrade XXX --latest  
yarn upgrade-interactive --latest  # UI permettant de sélectionner les packages à MAJ
yarn add xxx --network-timeout 100000 # en cas de message "npm info There appears to be trouble with your network connection"

V3

Depuis Node v16.10 yarn est une fonctionnalité qu'il faut activer, voir cheat sheets

Divers

package npm rsyslog pour les dev NodeJs

plugins Babel

babel-plugin-root-import : permet d’importer en partant de la racine du projet avec un ~ ce qui évite les ../../.. 😅 ou une solution alternative avec Webpack >2 (conf NextJs)

Vidéos

npm inc mets à disposition un tas de vidéos très clair à propos des commandes et concepts autour de npm ainsi que des conférences:

nodejs
npm
yarn
node_modules
rédigé le 01/11/18 par Behrouze
A proposCheat SheetsOutilsVidéos