Les bases de NodeJS
NPM
Lorsque vous installez NodeJS sur votre machine, vous installez automatiquement un utilitaire de commande associé : * *NPM (Node Package Manager)**. Ce dernier va permettre la gestion de notre projet Node.js, à commencer par sa création. Rendez-vous dans votre dossier de travail et utilisez la commande suivante afin de créer un projet NodeJS :
npm init
# Variante permettant de passer la phase interactive
npm init -y
Cela va vous créer un fichier très important : le package.json. Qui sera de cette forme :
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Il faut voir le package.json comme la carte d'identité de votre projet Node.js. Ce fichier JSON va contenir des clés
précises qui détiennent chacune une information sur une partie du projet, par exemple : son nom, la version du projet,
son ou ses auteurs, son fichier de point d'entrée, etc.
Il y en a deux qui vont être particulièrement intéressantes : les dependencies et les scripts. Nous détaillerons ces deux clés un peu plus tard.
Notre premier fichier
Nous venons de créer la carte d'identité de notre projet, mais ce dernier ne fait pas grand-chose. Nous allons désormais
essayer d'exécuter un fichier JavaScript. Faisons nos premiers pas à travers une fonction de somme. Créez un fichier
index.js et ajoutez le code suivant :
function add(a, b) {
return a + b
}
const result = add(2, 3)
console.log(`La somme de 2 et 3 est ${result}`)
Exécutez ce code avec la commande suivante dans votre terminal :
node index.js
Vous devriez voir s'afficher dans votre terminal : La somme de 2 et 3 est 5.
La commande
nodepermet d'exécuter un fichier JavaScript avec Node.js.
Package et dependencies
L'un des intérêts d'utiliser Node.js est la gestion des paquets. Ces paquets sont des bibliothèques de différentes utilités que les développeurs vont pouvoir installer dans un projet Node.js pour éviter d'avoir eux-mêmes à réécrire des parties entières de code.
À terme, votre application que vous développez peut elle-même devenir un package que vous mettrez à disposition sur le web pour d'autres utilisateurs.
Nous parlions plus tôt de NPM comme utilitaire de commande ; il faut dire qu'en réalité, NPM est plutôt un gestionnaire de paquets.
Pour installer un paquet, nous allons utiliser la commande suivante :
npm install nom_du_paquet
Dans notre cas, nous voulons simplifier l'utilisation de fonctions mathématiques, et nous voulons aussi apporter un peu de couleur à notre terminal. Nous allons donc installer deux paquets : chalk et mathjs.
npm install chalk mathjs
Cette commande va installer les fichiers clés du paquet dans un dossier appelé node_modules. Vous n'avez pas
nécessairement besoin de fouiller dans ce dossier ; sachez simplement qu'il sert à stocker vos packages externes
installés. Par ailleurs, on peut remarquer dans le package.json que la clé dependencies est désormais alimentée avec
le nom de notre paquet suivi de sa version. La liste de tous les paquets installés par votre projet sera donc désormais
indiquée dans cette clé dependencies.
Maintenant, nous allons utiliser ces paquets dans notre fichier index.js. Ajoutez-y le code suivant :
import { add } from 'mathjs'
import chalk from 'chalk'
const a = 2
const b = 3
const result = add(a, b)
console.log(chalk.green(`La somme de ${a} et ${b} est ${result}`))
Package-lock.json
Lorsque vous installez un paquet, NPM va créer un fichier package-lock.json. Ce fichier est un fichier de verrouillage
de version. Il va permettre de garantir que les versions des paquets installés dans votre projet restent les mêmes. Cela
permet d'éviter les problèmes de compatibilité entre les différentes versions des paquets.
Dans le cas où vous souhaitez installer les dépendances d'un projet, il est recommandé d'utiliser la commande
npm ciqui va se baser sur le fichier package-lock.json pour installer les dépendances.
Global et local
Il y a une différence à faire entre ces deux états. Un paquet installé avec npm install est installé localement,
c'est-à-dire qu'il n'est accessible que dans le scope de notre projet. Et c'est uniquement une fois notre serveur Node
démarré que ce dernier pourra accéder aux différents packages.
Il faut comprendre par là que si vous cherchez à utiliser une fonction de package dans votre terminal, elle ne sera pas
accessible, car votre terminal n'a pas accès au serveur tant qu'il n'est pas lancé.
Pour utiliser un package dans votre terminal, il faut l'installer sur votre système d'exploitation directement et non pas dans un projet. Cela peut être utile dans le cas où vous avez besoin d'un package commun à plusieurs projets, ou, comme dit précédemment, pour des packages qui doivent être utilisés dans le terminal.
Pour ce faire, nous allons ajouter le suffixe -g à la commande d'installation : npm install -g nom_du_package.
Vous pouvez ensuite vérifier la liste des packages globaux installés grâce à la commande npm list -g.
Dépendances de développement
Le package.json distingue deux types de dépendances selon leur utilité :
dependencies: Ce sont les packages indispensables au fonctionnement de votre application, même en production (sur le serveur déployé).devDependencies: Ce sont les packages qui facilitent le développement mais ne sont pas nécessaires lorsque l'application est déployée en production.
Installation :
npm install express
# ou
npm install -S express # -S pour --save (par défaut)
npm install -D nodemon
# ou
npm install --save-dev nodemon
Scripts
La clé scripts du package.json permet d'exécuter des commandes via npm run. C'est particulièrement utile pour :
- Exécuter des packages locaux (sans installation globale)
- Créer des raccourcis pour des commandes complexes
- Définir différents environnements (dev, test, build)
Installation :
npm install -D nodemon
Configuration dans package.json :
{
"scripts": {
"dev": "nodemon index.js",
"start": "node index.js"
}
}
Exécution :
npm run dev # Lance nodemon index.js
npm run test # Lance les tests
Récapitulatif des commandes utiles
npm init: Créer un projet Node.js et initialiser son package.jsonnpm init -y: Variante permettant de passer la phase interactivenpm install: Installer les dépendances d'un projetnpm ci: Installer les dépendances d'un projet en se basant sur le fichier package-lock.jsonnpm install <package>: Installer un paquetnpm install -g <package>: Installer un paquet globalementnpm list -g: Vérifier la liste des packages globaux installésnpm run <script>: Exécuter un script