Commandes npm essentielles que tout développeur devrait connaître
Vous utilisez probablement npm install et npm run dev tous les jours sans y réfléchir à deux fois. Mais l’interface en ligne de commande npm dispose d’une boîte à outils bien plus complète qui peut vous faire gagner un temps précieux — que vous déboguiez un arbre de dépendances défaillant, réalisiez un audit de vulnérabilités ou exécutiez un script ponctuel. Ce guide couvre les commandes npm essentielles et les modèles de workflow modernes qui devraient faire partie de la pratique quotidienne de tout développeur.
Points clés à retenir
npm install,npm uninstalletnpm outdatedconstituent le cœur de la gestion quotidienne des dépendances.- Utilisez
npm ls,npm explainetnpm querypour inspecter et déboguer votre arbre de dépendances. npm audit,npm sbometnpm diffvous offrent des outils pratiques pour la sécurité et la transparence de la chaîne d’approvisionnement logicielle.- Le champ
overridesdanspackage.jsonvous permet de verrouiller des dépendances transitives sans attendre les correctifs en amont. - Transmettre des options via les scripts avec
--et exécuter des binaires ponctuels avecnpm execrationalisent les workflows courants.
Installation et gestion des dépendances
Le pilier de la gestion des dépendances npm est npm install. Exécutez-le sans arguments pour synchroniser votre node_modules local avec package-lock.json. Ajoutez un nom de package pour installer quelque chose de nouveau :
npm install react # runtime dependency
npm install vite --save-dev # dev-only dependency
Pour supprimer un package en toute sécurité et nettoyer package.json en même temps :
npm uninstall lodash
Pour vérifier ce qui est obsolète dans votre projet :
npm outdated
Cela vous donne un tableau clair des versions actuelles, souhaitées et les plus récentes — utile avant de décider quoi mettre à jour et quand.
Exécution de scripts et transmission d’options
npm run sans aucun argument liste tous les scripts définis dans votre package.json. Pratique lorsque vous découvrez un projet inconnu.
Lorsque vous devez transmettre des options au script sous-jacent, utilisez -- pour les séparer :
npm run build -- --watch --mode=development
Tout ce qui suit -- est transmis directement au script, vous permettant d’ajuster le comportement sans toucher à package.json.
Inspection de l’arbre de dépendances
Deux commandes que les développeurs devraient connaître pour déboguer les problèmes de dépendances sont npm ls et npm explain (également aliasé comme npm why).
npm ls affiche votre arbre de dépendances complet. Passez un nom de package pour filtrer :
npm ls ms
npm explain vous indique pourquoi un package spécifique est installé — quelle dépendance directe l’a intégré :
npm explain ms@0.7.1
Pour un filtrage plus avancé, npm query vous permet de rechercher des dépendances en utilisant un DSL de style sélecteur CSS. Par exemple, pour trouver tous les packages qui définissent un script postinstall (une vérification de sécurité utile) :
npm query ":attr(scripts, [postinstall])"
Discover how at OpenReplay.com.
Exécution de packages sans les installer
npm exec exécute un binaire de package en utilisant les dépendances locales de votre projet, ou télécharge temporairement le package s’il n’est pas déjà installé. Dans les versions modernes de npm, la commande npx délègue à npm exec en coulisses.
npm exec -- create-react-app my-app
Elle respecte d’abord le node_modules local de votre projet, rendant le comportement plus prévisible qu’une installation globale.
Commandes npm axées sur la sécurité
npm audit analyse votre arbre de dépendances par rapport aux bases de données de vulnérabilités connues et affiche un rapport classé par gravité :
npm audit
npm audit fix # auto-fix safe updates
npm audit fix --force # apply breaking fixes (test thoroughly after)
Pour la transparence de la chaîne d’approvisionnement, npm sbom génère une nomenclature logicielle (Software Bill of Materials) — un inventaire complet des dépendances de votre projet dans un format lisible par machine :
npm sbom > sbom.json
Cette sortie peut être directement intégrée dans des outils de sécurité comme Snyk pour une analyse de vulnérabilités plus approfondie.
Pour comparer ce qui a réellement changé entre deux versions d’un package avant de mettre à jour :
npm diff --diff=ms@2.1.2 --diff=ms@2.1.3
La sortie ressemble à git diff, facilitant la détection de changements inattendus avant qu’ils n’arrivent dans votre projet.
Verrouillage des dépendances transitives
Lorsqu’une vulnérabilité se trouve dans une dépendance transitive que vous ne contrôlez pas directement, utilisez le champ overrides dans package.json pour forcer une version spécifique :
"overrides": {
"node-ipc": "9.2.1"
}
Notez que overrides est pris en charge dans npm v8.3 et versions ultérieures. Si vous utilisez Yarn, la fonctionnalité équivalente est resolutions. Cette approche est l’un des moyens les plus pratiques de maintenir un arbre de dépendances sécurisé sans attendre les mainteneurs en amont.
Conclusion
La plupart des développeurs n’exploitent qu’une fraction des capacités de npm. Les commandes présentées ici — de npm explain et npm query à npm sbom et overrides — comblent le fossé entre l’utilisation basique et un workflow véritablement efficace. Commencez par celles qui correspondent à vos points de friction actuels, et progressez à partir de là.
FAQ
npm exec est la commande intégrée introduite dans npm v7 qui exécute des binaires de packages, et c'est à elle que npx délègue en coulisses dans les versions modernes de npm. La différence clé est que npm exec vérifie d'abord votre node_modules local, vous offrant un comportement plus prévisible. Pour la plupart des tâches quotidiennes, les deux sont interchangeables, mais npm exec est l'approche recommandée à l'avenir.
Exécutez npm audit fix pour appliquer automatiquement les mises à jour sûres et compatibles avec semver. Si un correctif nécessite un changement de version majeure, utilisez npm audit fix --force, mais testez minutieusement votre application ensuite car des changements cassants peuvent être introduits. Pour les problèmes de dépendances transitives hors de votre contrôle direct, utilisez le champ overrides dans package.json pour verrouiller une version corrigée.
Utilisez overrides lorsqu'une vulnérabilité ou un bug existe dans une dépendance transitive et que la dépendance directe qui l'intègre n'a pas encore publié de correctif. Cela force npm à résoudre une version spécifique de ce package imbriqué. Cette fonctionnalité nécessite npm v8.3 ou version ultérieure. Testez toujours après avoir appliqué un override, car forcer une version peut causer des problèmes de compatibilité.
Exécutez npm explain suivi du nom et de la version du package, par exemple npm explain ms@0.7.1. Cela affiche la chaîne complète de dépendances qui a causé l'installation du package. Vous pouvez également utiliser le raccourci npm why. Pour une vue plus large de l'ensemble de votre arbre de dépendances, utilisez npm ls avec un filtre optionnel de nom de package.
Gain control over your UX
See how users are using your site as if you were sitting next to them, learn and iterate faster with OpenReplay. — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.