
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.
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ère | npm | npx |
---|---|---|
Type | Gestionnaire de paquets | Exécuteur de paquets |
Usage | Installation et gestion de dépendances | Exécution ponctuelle d’un package (sans installation préalable) |
Installation requise | Oui (via npm install -g package ) | Non (exécute directement le package) |
Gestion des versions | Garde la version installée | Télécharge la dernière version à chaque exécution |
Cas d’usage | Installer des dépendances d’un projet | Tester 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 ! 🚀