Créer un backend en Javascript (partie 5) : NPM (Node Package Manager)
Tags: javascript, node, express, beginners
Published: 2021-10-11 01:50:32

---
title: Créer un backend en Javascript (partie 5) : NPM (Node Package Manager)
description: 
published: true
tags: javascript, nodejs, express, beginner
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f1qn7uw1ymkntxsgx3tu.png
series: node101
---

Voici une série d'articles qui vous permettra créer des applications backend en Javascript.

Node.js est aujourd'hui un incontournable, il est donc essentiel pour un développeur de le maitriser.

Je vais donc publier un nouvel article environ au deux jours et petit à petit vous apprendrez tout ce qu'il y a à savoir sur Node.js

Pour ne rien manquer suivez moi sur twitter : https://twitter.com/EricLeCodeur
<hr>

## NPM (Node Package Manager)
Vous désiré créer une fonction ou un module NodeJS ? Pourquoi ré-inventer la roue ? Il y a de forte chance que la fonction que vous désirez coder à déjà été conçu par un autre dévelopeur.

NodeJS, vous permet d'utilisé des librairies créé par la communauté. Pour ce faire il existe un outils appelé NPM (Node package manager) qui permet de télécharger, d'installer et de gérer ces packages.

NPM est déjà pré-installé avec Node.js. c'est une application de type ligne de commande qui vous permettra d'installer le package de votre choix.

Le site web [https://www.npmjs.com/](https://www.npmjs.com/) contient la liste de tous les packages disponibles via NPM. Il y a en plus de un millions.

NPM prévoit un système qui permet de faire la gestion des packages installé et de leur version. Cette gestion ce fait avec l'aide d'un fichier qui se nomme 'package.json'

Ce fichier 'package.json' est unique à notre application et contient la liste des 'dependencies' de notre projet. C'est à dire la liste de tous les packages installé et leur version. 

Ce fichier contient également d'autre information sur votre projet comme le nom, l'auteur et le fichier d'entré (le premier que Node.jS va exécuter). Il est également possible de créer des commandes 'script' pour lancer certaine fonction comme le serveur ou la compilation et l'exécution du projet. 

Vous pouvez créer ce fichier 'package.json' manuellement ou lancé une commande NPM pour le faire automatiquement

```jsx
$ npm init
```

La commande posera quelques questions. Utilisez simplement les réponses par défaut et il créera le fichier de 'package.json'

À noter que si vous n'avez ps créé de fichier 'package.json' lorsque vous installerai votre premier package, NPM va créer le fichier automatiquement pour vous.

Nous allons maintenant installer notre premier package nommé 'slugify'. Ce package est un petit utilitaire pour créer une URL conviviale pour le Web à partir d'une chaîne. Ex. « Bienvenue chez moi » se transformera en URL conviviale pour le Web : bienvenue-chez-moi

Pour installer le package entrer la commande suivante dans le terminal :

```jsx
npm install slugify
```

Une fois le package installé, vous pouvez consulter le fichier 'package.json', vous y trouverez le package 'slugify' listé sous la liste des 'dependencies' :

```jsx
{
  "dependencies": {
    "slugify": "^1.6.0"
  }
}
```

À noter que les fichiers sources de ce packages ont tous été copier dans le dossier 'node_modules'

Ce package peut maintenant être utilisé dans votre application

```jsx
const slugify = require('slugify')

console.log(slugify('My New Web Site'))
// My-New-Web-Site
```

NPM peut également installer des packages globalement afin que toute les applications Node.js sur votre ordinateur puisse importer et utiliser les packages installés. NPM installe les packages globaux dans le dossier //local/lib/node_modules. 

Ajouter -g dans la commande d'installation pour installer le package globalement.

```bash
$ npm install create-react-app -g
```

La plupart du temps, vous aurez besoin de privilèges d'administrateur pour installer un package globalement. Dans ce cas, utilisez la commande sudo (sur Mac)

```bash
$ sudo npm install create-react-app -g
```

### Gestion des versions

Nous pouvons voir le numéro de version du package dans le fichier de 'package.json'

```bash
"dependencies": {
    "slugify": "^1.4.7"
  }
```

Le numéro de version se lit comme ceci (ex. 1.4.7) :

- Version majeure (1) : Nouvelle version avec des changements de rupture
- Version mineure (4) : Nouvelles fonctionnalités mais pas de changements de rupture
- Patch version (7) : Seuls les bugs sont corrigés
- Préfixe de version :
^1.4.7 : Accepter la mise à jour de la version mineure
~1.4.7 : Accepter uniquement la mise à jour de la version du correctif (patch version))
*1.4.7 : Accepter toutes les mises à jour de version (non recommandé)

### Mise à jour des packages

```bash
npm update slugify
```

Cette commande installera les mises à jour acceptées (si elles existent à ce moment-là)

### Deinstallation des packages

```bash
npm uninstall slugify
```

### Dossier node_modules

Lorsque vous installez un package, le contenu du package sera installé dans ce dossier. Si vous supprimez ce dossier, vous pouvez le recréer en exécutant :

```bash
$ npm install
```

Cette commande réinstallera tous vos packages répertoriés dans le fichier de  'packages.json'

Cette commande est pratique pour installer des packages lorsque vous copiez une application d'un collègue ou depuis Github. Parce que lorsque vous le faites, le dossier node_modules n'est jamais fourni. Vous avez donc besoin de cette commande pour le recréer.

### Node Package Execute (NPX)

npx est l'acronyme de Node Package execute. C'est un outil spécialement conçu pour l'exécution des paquets. Lorsque vous lancez l'exécution d'un paquet avec cet outil, npx va chercher dans la variable "PATH" de l'ordinateur puis dans les fichiers binaires des modules du projet pour lancer la commande. S'il ne l'a pas trouvé, l'outil est même capable d'aller sur internet chercher la commande et de l'exécuter ensuite. 

Le paquet est exécuté dans le répertoire en cours. npx peut également être utilisé dans la section "scripts" du fichier "packages.json", afin de mettre des commandes qui lancent un serveur ou une plateforme au démarrage.

Lancer un paquet avec npx

```bash
npx creat-react-app my-app
```

## Le package nodemon
Lorsque vous développé une application NodeJS, chaque fois que vous modifiez votre code vous devez arrêter le serveur et relancer votre application. C'est une perte de temps énorme.

Heureusement, il existe un outils pour remédier a cela: nodemon 

nodemon est un outil qui aide à développer des applications basées sur Node.js en redémarrant automatiquement l'application Node lorsque des modifications de fichier dans le répertoire sont détectées.

nodemon ne nécessite aucune modification supplémentaire de votre code ou de votre méthode de développement. nodemon est un wrapper de remplacement pour Node. Pour utiliser nodemon, remplacez le mot node sur la ligne de commande lors de l'exécution de votre script.

Exemple utilisation pour lancer/tester votre application:

```bash
$ npx nodemon app.js
```

Installation du module en mode développement seulement

```bash
$ sudo npm install nodemon -D
```

Il est également possible d'installer le package nodemon de façon global. De cette façon vous pourrer utiliser nodemon à partir de tous vos projets

Voici la commande pour l'installation

```bash
$ npm install nodemon -g
```

Utilisation une fois installé globalement

```bash
$ nodemon app.js
```

## Conclusion
C'est tout pour aujourd'hui, suivez moi sur twitter : https://twitter.com/EricLeCodeur afin d'être avisé de la parution du prochain article (d'ici deux jours).