Aller au contenu

npm

Npm est le gestionnaire de paquets (modules) officiel de Node.js. Celui-ci permet d’ajouter des modules externes dans une application Node.js Depuis la version 0.6.3 de Node.js, npm fait partie de l'environnement et est donc automatiquement installé par défaut. Npm fonctionne dans un terminal et gère les dépendances pour une application. Il permet également d'installer des applications Node.js disponibles sur le dépôt npm.

npm init

La commande npm init permet d’initialiser un projet Node.js dans le but de gérer les modules associés au projet.

console
npm init -y

Cette commande crée un fichier nommé package.json qui contiendra les configurations du projet ainsi que la liste des divers modules nécessaires pour son bon fonctionnement. L'option -y va créer le fichier avec les informations par défaut.

Cette commande devrait toujours être exécutée avant de procéder à l’installation de modules.

Manuel

npm init

package.json
{
  "name": "AppName",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

Si vous utilisez des ES module dans votre projet, ajouter la ligne "type": "module" comme on peut voir dans l'exemple plus haut à la ligne 6.

npm install

La commande npm install permet d’installer des modules dans un projet. Lors de l’ajout d’un premier module au projet, le dossier node_modules est automatiquement créé. Pour installer un module dans un projet :

console
npm install nomModule

Pour chaque installation de module :
Un sous-dossier au nom du module est créé. Toutes les dépendances sont également chargées. Le module et ses dépendances sont ajoutées dans le fichier package.json

Partage et Déploiement :
Lorsqu’on partage un projet, on ne fournit généralement pas le dossier node_modules car sa taille peut devenir relativement élevée et les versions de Node.js ne sont pas nécessairement les mêmes. La commande npm install (sans préciser le nom du module) permet d’installer automatiquement tous les modules manquants (npm se fie au fichier package.json pour identifier les modules à installer)

Les options

Lors de l’installation de modules, je recommande toujours d’utiliser la commande disponible dans la procédure d’installation du module. Parfois, certaines options sont nécessaires.

Manuel

npm-install

Les plus courantes :

  • --save ou -S : Ajoute le module à la liste de dépendances dans le fichier package.json. Cette option n’est plus nécessaire depuis la version npm 5.0.0, les modules étant ajoutés par défaut à la liste de dépendances. Vous verrez cependant régulièrement cette option dans les procédures d’installation de modules officiels.
  • --global ou -g : Ajoute le module globalement sur votre PC. Je recommande peu cette option à moins que le module ne soit pas implicitement impliqué dans le projet. npm global (If you are using npm 5.2 or higher, we recommend using npx to run packages globally).

npm install --save-dev

Dans votre développement, c’est possible que vous utilisiez des modules seulement pour aider le développement, mais qui ne sont pas nécessaires en production.

Dans ce cas, il faut utiliser npm install avec l’option --save-dev ou -D.

Ex :

console
npm install nodemon -D

Dans packages.json ça donne :

packages.json
{
  "name": "AppName",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "nodemon": "^3.0.2"
  }
}

Modules utiles au développement

nodemon

Module qui observe les fichiers de votre projet et qui redémarre le programme automatiquement.

Installation :

Console
npm install nodemon -D

L'option -D (ou --save-dev) indique que le module sera installé que pour le développement et qui n'est pas nécessaire. C'est le cas ici pour nodemon

Pour faciliter l’utilisation de nodemon, ajoutez un script dans packages.json en ajustant le nom du fichier JavaScript à lancer au démarrage :

packages.json
{
  "name": "AppName",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "start": "nodemon fichier.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "nodemon": "^3.0.2"
  }
}

Pour exécuter votre programme, il suffit de faire la commande suivante :

console
npm start

Attention

Si vous utilisez d'autres termes que start pour lancer votre script, vous devez faire la commande npm run et le nom à utiliser. Par exemple si vous voulez lancer une commande avec le mot-clé dev, vous devrez faire :

console
npm run dev

dotenv

Paramétrez votre application directement dans le code est imprudent. Des informations confidentielles peuvent se retrouver dans votre dépôt GitHub à la vue de tout le monde, ex :

a_ne_pas_faire.js
const cleAPI = "FKSDKLJFKDSKLJF898FSDKJKSD898F9DSKLFDSKFSD";
const utilisateurBD = "admin";
const motDePasse="password";

Installation :

console
npm install dotenv  

Pour plus de sécurité créez un fichier nommé .env qui va contenir les informations sensibles. Ce fichier ne doit pas être indexé dans votre dépot Github, penser à l'ajouter au fichier .gitignore.

.env
cleAPI="FKSDKLJFKDSKLJF898FSDKJKSD898F9DSKLFDSKFSD"
utilisateurBD="admin"
motDePasse="password"
Ensuite dans le code importé le fichier et vous pouvez récupérer les informations de cette façon :

a_faire.js
import dotenv from 'dotenv';

dotenv.config();

const cleAPI = process.env.cleAPI;

Information à ajouter dans le fichier .gitignore

Il est essentiel de ne pas envoyer dans votre dépôt git le dossier node_modules ainsi que le fichier .env si vous en avez un. Ajoutez ces lignes dans .gitignore :

.gitignore
**/node_modules 
.env  

Parcontre notre application à besoin du fichier .env pour fonctionner. Une pratique courante est d'ajouter un fichier .env.exemple avec les constantes à avoir mais sans valeur pour indiquer à la personne qui va utiliser votre application quels champs remplir.

.env.exemple
cleAPI=
utilisateurBD=
motDePasse=

Mise à jour des modules

Pour mettre à jour les modules, on doit faire la commande

.gitignore
npm update [-g] [<pkg>...]

npm-versions.png

Le fonctionnement des versions

Explication du système de version et des symboles utilisés : npm version cheatsheet