Formation Node.js | Gérer ses Paquets avec NPM
Apprenez à utiliser npm, un gestionnaire de paquets incontournable pour gérer efficacement les dépendances de vos projets Node.js.
Qu’est-ce que npm ?
Gestionnaire de paquets
En programmation, on dit souvent qu’il ne faut pas « réinventer la roue ».
Pourquoi ? Car la plupart des fonctionnalités que vous voulez intégrer dans vos projets ont sûrement déjà été développées et testées par d’autres avant vous. En plus de ça, des personnes vont même être en charge de les maintenir (évolution / corrections / sécurité).
Et la magie de l’open-source… c’est que vous pourrez télécharger le code de ces fonctionnalités et les installer dans votre projet ; on parle de « paquets » ou « dépendances ».
C’est là qu’interviennent les gestionnaires de paquets : tels d’immenses annuaires, ils listent les paquets disponibles, leurs propres dépendances et permettent de les télécharger, installer, mettre à jour et désinstaller très facilement.
Il existe de nombreux packages managers. Chacun est dédié à un langage ou à un framework particulier :
- Maven (JAVA)
- Bundler (Ruby)
- Composer (PHP)
- npm ou yarn (JavaScript)
- pip (Python)
- Etc.
Dans notre cas, c’est npm qui va nous intéresser.
npm
(Node Package Manager) est le gestionnaire de paquets pour JavaScript le plus utilisé dans le monde, il regroupe tous les paquets open-source communautaires pour Node.js mais aussi pour le reste de l’écosystème JavaScript.
Node.js propose par défaut une bibliothèque standard élémentaire (les « Core Modules ») pour de nombreuses tâches courantes. Cependant, pour des besoins spécifiques ou avancés, il est courant d’installer des paquets externes via npm
(les « Third-Party Modules »).
Fonctionnement
npm permet de gérer des dépendances via des lignes de commande.
Il automatise la gestion des paquets et de leurs dépendances en installant et mettant à jour lui-même les différents paquets dont dépend notre projet. Ces paquets peuvent être installés :
- Localement : Indépendamment sur chacun de vos projets
- Globalement : Afin de les rendre disponibles en tant que ligne de commande pour être utilisés par d’autres projets
Arborescence npm
Pour fonctionner npm travaille avec des fichiers de registre listant les dépendances nécessaires au projet ainsi qu’un dossier stockant le code source des dépendances en question.
📄 package.json
: l’annuaire
Il regroupe l’ensemble des dépendances listées pour le projet.
📄 package-lock.json
: le snapshot
Ce fichier est généré automatiquement pour toutes les opérations où npm modifie soit le dossier 📁 node_modules
ou le fichier 📄 package.json
. Il stocke la structure exacte de votre arborescence de dépendances à chaque installation.
📁 node_modules
: les sources
Toutes leurs sources spécifiées dans 📄 package.json
seront disponibles dans un dossier 📁 node_modules
présent à la racine du projet.
Via le terminal, npm permet d’accéder très facilement aux différentes versions des librairies back-end et front-end utilisées.
npmjs : un annuaire pour les dépendances npm
npmjs.com est la plateforme référençant tous les paquets open-source disponibles pour npm. Cette plateforme joue le rôle d’annuaire de référence pour la communauté de développeurs Node.
Les paquets publiés sur npmjs sont gérés par la communauté et sont gratuits.
Les paquets npm (outils, frameworks, bibliothèques…) sont installés en ligne de commande et peuvent être mis à jour facilement et rapidement.
Gérer des paquets avec npm
Les opérations classiques effectuées sur les paquets sont l’installation, la mise à jour et la suppression.
Initialiser le fichier de registre package.json
Tout projet Node.js commence avec la création du fichier de registre 📄 package.json
qui va permettre de gérer les dépendances futures du projet.
Taper la commande suivante :
npm init
Décrivez votre projet en répondant aux questions de l’assistant de configuration :
- Nom du projet (en minuscules)
- Version
- Description
- Repository git
- Mots clés
- Auteur
- Licence
Cette commande génère un fichier 📄 package.json
vierge, dans lequel seront enregistrés les détails de tous les packages npm utilisés dans un projet.
{
"name": "nom-projet",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server"
},
"keywords": [],
"author": "",
"license": "ISC"
}
La clé main
La clé "main"
définit le nom du fichier principal de l’application. Il s’agit généralement du point d’entrée principal de l’application, contenant le code qui démarre l’application (le serveur).
La clé scripts
La clé "scripts"
définit les scripts qui peuvent être exécutés pour le projet en utilisant la commande npm run
. Les scripts définis dans la clé "scripts"
peuvent être utilisés pour effectuer diverses tâches, telles que la compilation du code, les tests, le déploiement, etc.
Deux scripts sont initialisés par défaut :
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
}
},
- La commande
npm run test
affichera le message d’erreur"Error: no test specified"
dans la console et quittera avec un code d’erreur1
, signifiant qu’une erreur s’est produite. - La commande
npm run start
exécutera le code JavaScript du fichier📄 server.js
.
Installer un paquet
Pour installer un paquet Node, on exécute la commande npm install
, mais cette commande présente certaines options en fonction des paramètres d’installation souhaités.
Installation locale
npm install <nom_paquet>
Certains paquets vont être nécessaires pour votre environnement de développement et de test, mais pas en production (task runner, webpack…). Il faudra alors préciser le flag --save-dev
ou -d
sur ceux-ci :
npm install <nom_paquet> --save-dev
npm install <nom_paquet> -d
Installation globale
L’option -g
de npm permet d’installer un package Node.js de manière globale, le rendant disponible en tant que commande dans tout le système.
npm install <nom_paquet> -g
Installation d’une version spécifique
Par défaut, la dernière version du package est téléchargée, mais il est possible d’en spécifier une version particulière avec la ligne de commande :
npm install <nom_paquet>@<version>
Mettre à jour un paquet
Avec le temps, la plupart des paquets maintenus vont évoluer vers de plus récentes versions.
Si vous aviez téléchargé un paquet en v.1.3.7
en début d’année, il est possible que 6 mois plus tard, ce paquet soit en v.1.4.5
. Il faudra alors le mettre à jour pour profiter des dernières fonctionnalités, mais aussi des corrections et mises à jour de sécurité.
Pour mettre à jour un paquet Node, on exécute la commande npm update
, mais cette commande présente certaines options en fonction des paramètres de mise à jour souhaités.
Mise à jour de tous les packages locaux
npm update
Mise à jour de tous les packages globaux
npm update -g
Mise à jour d’un package spécifique
npm update <nom_paquet>
Supprimer un paquet
Pour supprimer un paquet Node, on exécute la commande npm uninstall
, suivi du nom du paquet à supprimer, mais cette commande présente certaines options en fonction des paramètres d’installation souhaités.
Suppression locale
npm uninstall <nom_paquet>
Si le paquet a été installé en tant que dépendance de développement, il faudra alors préciser le flag --save-dev
ou -d
:
npm uninstall <nom_paquet> --save-dev
npm uninstall <nom_paquet> -d
Suppression globale
npm uninstall <nom_paquet> -g
Mettre à jour npm
Pour mettre à jour votre version de npm sur Windows, macOS ou Linux, il est possible d’utiliser… npm
.
Télécharge la dernière version stable avec @latest
npm install npm@latest -g
Télécharge la plus récente version avec @next
npm install npm@next -g
Télécharge une version spécifique avec @{numéro de version}
npm install [email protected] -g