npx : exécuter un paquet sans l'installer durablement

npx lance l'exécutable d'un paquet, qu'il soit déjà installé dans le projet ou téléchargé pour l'occasion. C'est l'outil des commandes ponctuelles.
3 min de lecture
Believemy logo

Certains outils ne servent qu'une fois : le générateur qui crée le squelette d'un projet, la commande de migration lancée un soir de mise à jour. Les installer durablement pour les oublier ensuite encombre la machine et le fichier de dépendances.

npx règle ce cas en exécutant un paquet à la demande, puis en rendant la main.


Définition

npx est la commande livrée avec npm qui exécute le programme fourni par un paquet. Elle cherche d'abord cet exécutable dans le projet courant, et ne le télécharge dans un cache temporaire que s'il est absent.

Un paquet peut exposer un programme grâce au champ bin de son package.json, qui associe un nom de commande à un fichier.

JAVASCRIPT
#!/usr/bin/env node
// dire-bonjour.js, le fichier désigné par le champ bin

const nom = process.argv[2] || "le monde";
console.log("Bonjour " + nom + " !");

Le champ s'écrit "bin": { "dire-bonjour": "./dire-bonjour.js" }, et une fois le paquet publié, npx dire-bonjour Marie affiche le message sans que rien ne reste installé. La toute première ligne indique au système quel programme doit exécuter ce fichier.


Ce que npx cherche, et dans quel ordre

  • Le projet courant : si le paquet figure dans node_modules, c'est cette version qui est lancée, celle que le projet a verrouillée.
  • Le cache local : un paquet déjà téléchargé lors d'un précédent appel est réutilisé, sans nouveau transfert.
  • Le registre : sinon npx demande confirmation, télécharge, exécute, et n'ajoute rien à vos dépendances.
Bon à savoir

Préciser la version évite les mauvaises surprises. npx eslint@9 . lance une version choisie plutôt que la dernière publiée, ce qui rend une commande reproductible dans une documentation ou un script.


Quand l'utiliser plutôt qu'une installation

npx convient aux commandes ponctuelles : créer un projet, générer un fichier de configuration, essayer un outil avant de l'adopter. Il évite d'installer sur toute la machine un paquet dont la version finira par diverger de celle des projets.

Dès qu'une commande revient tous les jours, elle mérite l'inverse : installer le paquet en dépendance de développement et déclarer un script dans package.json. Le lancement devient plus court, et surtout toute l'équipe utilise la même version.


Questions fréquentes

Question

npx télécharge-t-il le paquet à chaque appel ?

Non. Un paquet présent dans le projet est lancé directement, et un paquet déjà tiré une fois reste dans un cache réutilisé ensuite. Le téléchargement ne se produit vraiment qu'au premier appel, ou après un changement de version demandée.


Question

Pourquoi npx me demande-t-il une confirmation ?

Parce qu'il s'apprête à installer un paquet qui n'est pas dans le projet, et qu'exécuter du code venu du registre mérite un accord explicite. L'option --yes passe outre, ce qui rend service dans un script automatisé, à condition de savoir exactement quel paquet est lancé.


Question

Quelle différence avec npm create ?

npm create nom est un raccourci qui va chercher un paquet appelé create-nom et l'exécute, ce qui explique la forme npm create vite@latest. Sous le capot, le mécanisme est le même que celui de npx : télécharger un outil de démarrage, le lancer, ne rien laisser derrière.

Termes connexes

Découvrez notre glossaire JavaScript

Tous les mots de JavaScript expliqués simplement : mots-clés, objets natifs, méthodes, erreurs et concepts. Définitions claires et exemples qui tournent, pour apprendre et pour se dépanner.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.