Image de couverture - Différences entre NPM et NPX

Différences entre NPM et NPX

Découvrez les différences entre npm et npx, leur rôle dans la gestion des packages JavaScript et comment les utiliser efficacement pour vos projets.

Icône de calendrier
Icône de chronomètre 5 min

npm et npx sont deux outils liés à la gestion des packages JavaScript, mais leurs usages diffèrent : découvrez quand et comment les utiliser.

Qu’est-ce que npm ?

Un gestionnaire de paquets

npm (Node Package Manager) est le gestionnaire de paquets officiel de Node.js.

Il permet de gérer (installation, mise à jour, suppression…) les dépendances pour un projet.

npm est généralement installé par défaut avec Node.js.

Quelques commandes courantes

Voici quelques commandes npm courantes :

# Installer un package
npm install <nom-du-package>
# Mettre à jour les dépendances d'un projet vers les versions compatibles les plus récentes
npm update
# Désinstaller un package
npm uninstall <nom-du-package>
# Exécuter un script défini dans le fichier `📄 package.json` sous la section `scripts`
npm run <script>

Qu’est-ce que npx ?

Un exécuteur de paquet

npx (Node Package eXecute) est un outil fourni avec npm depuis la version 5.2.

Il permet d’exécuter directement des packages Node.js sans les installer de manière globale sur votre machine ou localement dans votre projet.

Cela permet d’exécuter des commandes ponctuelles associées à des outils spécifiques dont l’usage est ponctuel sans encombrer votre environnement node avec des dépendances inutiles.

Cela s’avère particulièrement utile pour exécuter des paquets permettant par exemple de :

Initialiser une application

npx permet de créer rapidement un projet sans installation préalable.

Par exemple, pour démarrer un projet Next.js :

npx create-next-app@latest

Sans npx, il faudrait d’abord installer le package globalement, puis l’exécuter :

npm install create-react-app -g  
create-react-app my-app  

Avec npx, la commande est directe et ne laisse aucune trace après usage.

Exécuter un utilitaire

Certains utilitaires en ligne de commande peuvent être lancés directement via npx, sans installation préalable.

Exemple avec Prisma :

npx prisma

Cela évite d’ajouter Prisma en tant que dépendance si son usage est occasionnel.

Exécuter un package directement depuis un dépôt GitHub

npx peut aussi exécuter des scripts hébergés sur GitHub, sans nécessiter de clonage ou d’installation manuelle.

Par défaut, npx cherche le package sur le registre npm, mais il peut aussi récupérer un script directement depuis un dépôt GitHub ou un Gist :

npx github:username/repository#branch-or-tag

C’est idéal pour tester rapidement des outils open-source sans les ajouter à ton projet.

npx pourrait globalement servir à tout autre usage ponctuel où l’installation d’un paquet n’est pas nécessaire.

Comment fonctionne npx ?

npx permet d’exécuter des paquets Node.js sans les installer. Voici comment il fonctionne :

  • Paquet déjà installé globalement : Si le paquet est déjà présent sur votre système (installation avec npm install <npm-paquet> -g), npx utilise cette version globale.
  • Paquet déjà installé localement : Si le paquet est déjà présent dans le dossier node_modules de votre projet, npx utilise cette version locale.
  • Paquet non installé : Si le paquet n’est pas installé, npx le télécharge dans un cache temporaire (📂 ~/.npm/_npx) et l’exécute sans l’ajouter à 📄 package.json ni à 📁 node_modules. Le paquet est supprimé à l’expiration du cache.
Où sont stockés les exécutables ?

Lorsqu’un package contient un binaire (exécutable CLI), npm crée automatiquement des liens symboliques vers cet exécutable. Cela permet d’exécuter directement les commandes sans devoir indiquer le chemin complet.

Installés localement

Les binaires sont stockés dans le dossier 📁 ./node_modules/.bin/ et peuvent être exécutés :

  • Directement dans le terminal en tapant le chemin vers le binaire :
./node_modules/.bin/cowsay "Hello"
  • Via un script npm (npm run <script>) défini dans le fichier 📄 package.json utilisant le lien symbolique (nul besoin de taper le chemin vers le binaire) :
{
  "scripts": {
    "hello": "cowsay \"Hello\""
  }
}

Lors d’un npm run hello, cowsay fait directement référence au binaire 📁 ./node_modules/.bin/cowsay.

Installés globalement

Les binaires sont stockés dans le dossier global du système (/usr/local/bin sur Linux/Mac et %AppData%/npm sur Windows).

npm modifie la variable PATH du système pour inclure ce répertoire global, permettant ainsi l’exécution des commandes depuis le nom du paquet en utilisant le lien symbolique (nul besoin de taper le chemin vers le binaire).

👉 Avec npx, plus de prise de tête : il utilise les liens existants ou crée temporairement des paquets dans un cache en arrière-plan si nécessaire. Du coup, npx <nom-paquet> fonctionne toujours, peu importe la situation !

Avantages de npx

Utiliser npx en complément de npm présente plusieurs avantages :

  • Pas d’installation : Inutile d’installer un package : npx le télécharge temporairement et l’exécute, ce qui évite d’encombrer votre environnement (système ou projet).
  • Usage ponctuel : Parfait pour exécuter des outils ou des scripts dont vous n’avez besoin qu’une seule fois (npx create-react-app, etc.).
  • Meilleure gestion des versions (compatibilité) : En utilisant npx, vous vous assurez d’exécuter la bonne version d’un package, sans perturber d’autres projets.

npm VS npx : tableau comparatif

Voici un tableau comparatif résumant les principales différences entre npm et npx.

Critèrenpmnpx
TypeGestionnaire de paquetsExécuteur de paquets
UsageInstallation et gestion de dépendancesExécution ponctuelle d’un package (sans installation préalable)
Installation requiseOui (via npm install -g package)Non (exécute directement le package)
Gestion des versionsGarde la version installéeTélécharge la dernière version à chaque exécution
Cas d’usageInstaller des dépendances d’un projetTester un package rapidement, exécuter un script unique

npm et npx sont complémentaires : npm gère les dépendances, tandis que npx permet d’exécuter des actions ponctuelles, sans installation permanente. Adoptez la meilleure approche selon vos besoins ! 🚀

Lire aussi