Node.js et npm
Introduction à Node.js
Section intitulée « Introduction à Node.js »Avec Node.js, on peut écrire des serveurs web, des scripts d’automatisation, des outils en ligne de commande, et bien plus — le tout en JavaScript. Dans ce cours, on construit des applications web complètes. Node.js nous permet d’utiliser un seul langage pour le client et le serveur.
Installation de Node.js
Section intitulée « Installation de Node.js »Rendez-vous sur nodejs.org et téléchargez la version LTS (Long Term Support) — c’est la version stable recommandée pour le développement.
L’installateur inclut deux programmes :
node— l’interpréteur JavaScriptnpm— le gestionnaire de paquets (Node Package Manager)
Vérification
Section intitulée « Vérification »Après l’installation, ouvrez un terminal et vérifiez :
node --version # ex: v22.15.0npm --version # ex: 10.9.2Exécuter du JavaScript
Section intitulée « Exécuter du JavaScript »Exécuter un fichier :
node mon_script.jsMode interactif (REPL) — utile pour tester rapidement :
node> 2 + 24> "Bonjour".toUpperCase()'BONJOUR'> .exitDémarrer un projet Node.js
Section intitulée « Démarrer un projet Node.js »Un projet Node.js est un dossier contenant au minimum un fichier package.json qui décrit le projet et ses dépendances.
Initialisation
Section intitulée « Initialisation »mkdir mon-projetcd mon-projetnpm init -yLa commande npm init crée le fichier package.json qui définit les informations de ton projet (nom, version, description, auteur) ainsi que la liste de ses dépendances.
Le drapeau -y répond oui à toutes les questions et génère le fichier avec des valeurs par défaut.
Sans -y, npm pose une série de questions de façon interactive.
Installer un paquet
Section intitulée « Installer un paquet »npm install expressCette commande fait trois choses :
- Télécharge
expresset toutes ses dépendances dans le dossiernode_modules/ - Ajoute
expressà la sectiondependenciesdepackage.json - Crée ou met à jour
package-lock.json(verrouillage des versions exactes)
On peut en installer plusieurs d’un coup, ou cibler une version précise :
npm install lodash axios # plusieurs paquets à la foisnpm install express@4.21.0 # une version spécifiqueDépendances de production vs de développement
Section intitulée « Dépendances de production vs de développement »Toutes les dépendances ne servent pas au même moment. Certaines sont nécessaires pour que l’application fonctionne (ex: un serveur a besoin d’Express). D’autres ne servent qu’au développement : formateurs de code, outils de test, linters.
On les sépare avec -D (ou --save-dev) :
npm install -D prettier # ajouté à devDependenciesLes devDependencies ne sont pas installées en production. Cette distinction réduit le poids de l’environnement de production.
Dépendances globales
Section intitulée « Dépendances globales »Certains outils en ligne de commande s’installent globalement, pour être disponibles depuis n’importe quel dossier (projet) :
npm install -g <paquet>Structure d’un projet Node.js
Section intitulée « Structure d’un projet Node.js »mon-projet/├── node_modules/ ← dépendances (généré, ne pas modifier)├── src/│ ├── index.js ← point d'entrée│ ├── routes/ ← définition des routes│ └── utils/ ← fonctions utilitaires├── public/ ← fichiers statiques (HTML, CSS, images)├── package.json ← manifeste du projet├── package-lock.json ← versions verrouillées exactes└── .gitignore ← doit contenir node_modules/Règles essentielles
Section intitulée « Règles essentielles »node_modules/ doit toujours apparaître dans .gitignore.
Le dossier node_modules/ peut contenir des milliers de fichiers et se régénère avec npm install.
On ne versionne jamais les dépendances elles-mêmes — seulement la liste des dépendances dans package.json.
package-lock.json doit être versionné.
Il garantit que tous les développeurs d’une équipe installent exactement les mêmes versions.
Un collaborateur qui clone le projet fait simplement :
git clone <url>cd mon-projetnpm install # recrée node_modules/ à partir de package.jsonLe fichier package.json
Section intitulée « Le fichier package.json »C’est le manifeste du projet (équivalent du pom.xml en Java).
Il décrit le projet, ses dépendances, et ses scripts.
{ "name": "mon-serveur", "version": "1.0.0", "description": "Serveur web pour IFT3225", "main": "src/index.js", "type": "module", "scripts": { "start": "node src/index.js", "dev": "node --watch src/index.js" }, "dependencies": { "express": "^4.21.0" }, "devDependencies": { "prettier": "^3.3.0" }}Champs importants
Section intitulée « Champs importants »"type": "module" : Active la syntaxe import/export (ES Modules).
Sans cette ligne, Node.js utilise l’ancien système require() (CommonJS).
"scripts" : Définit des commandes personnalisées exécutables via npm run <nom>. Le script "dev" ci-dessus utilise --watch, un mode qui redémarre automatiquement le serveur quand un fichier change.
"dependencies" : Les paquets nécessaires en production (le serveur en a besoin pour fonctionner).
"devDependencies" : Les paquets utilisés seulement pendant le développement (formateurs, outils de test, etc.).
Le préfixe ^ dans les versions (ex: "^4.21.0") signifie « compatible avec 4.21.0 » — npm pourra installer 4.21.5 ou 4.22.0, mais pas 5.0.0.
Les scripts npm
Section intitulée « Les scripts npm »Les scripts automatisent les tâches répétitives du projet : lancer le serveur, exécuter les tests, construire le code. On les définit dans la section "scripts" du package.json :
"scripts": { "start": "node src/index.js", "dev": "node --watch src/index.js", "test": "node --test"}On les exécute avec npm run <nom> :
npm run devPasser des arguments à un script
Section intitulée « Passer des arguments à un script »Le -- sépare les arguments destinés à npm de ceux destinés au script lui-même :
npm run dev -- --port 8080Tout ce qui suit -- est transmis tel quel à la commande du script.
npx — exécuter sans installer
Section intitulée « npx — exécuter sans installer »npx est livré avec npm. Il exécute un paquet sans l’installer globalement : npx le télécharge temporairement, l’exécute, puis le retire. C’est idéal pour les outils qu’on utilise rarement ou une seule fois.
npx create-astro@latest mon-site # échafauder un projet Astronpx prettier --write . # formater sans installer prettier globalementRéférence des commandes
Section intitulée « Référence des commandes »Un récapitulatif des commandes npm les plus utilisées, pour consultation rapide.
Projet et dépendances
Section intitulée « Projet et dépendances »| Commande | Effet |
|---|---|
npm init -y |
Crée un package.json avec les valeurs par défaut |
npm install (ou npm i) |
Installe toutes les dépendances du package.json |
npm install <pkg> |
Installe un paquet et l’ajoute aux dependencies |
npm install <pkg>@<version> |
Installe une version précise |
npm install -D <pkg> |
Installe en devDependencies |
npm install -g <pkg> |
Installe globalement (hors projet) |
npm uninstall <pkg> |
Retire un paquet |
Mise à jour et inspection
Section intitulée « Mise à jour et inspection »| Commande | Effet |
|---|---|
npm update |
Met à jour selon les plages de versions autorisées |
npm update <pkg> |
Met à jour un paquet précis |
npm outdated |
Liste les paquets ayant une version plus récente |
npm list |
Affiche l’arbre des dépendances locales |
npm list -g |
Affiche les paquets installés globalement |
npm -v |
Affiche la version de npm |
Scripts et exécution
Section intitulée « Scripts et exécution »| Commande | Effet |
|---|---|
npm run <script> |
Exécute un script défini dans package.json |
npm run |
Liste tous les scripts disponibles |
npm start |
Raccourci pour npm run start |
npm test |
Raccourci pour npm run test |
npm run <script> -- <args> |
Passe des arguments au script |
npx <pkg> |
Exécute un paquet sans l’installer |