Écrit par Fimber Elemuwa✏️
Lorsque vous travaillez avec JavaScript ou Node.js, il est probable que vous ayez rencontré npm, le gestionnaire de packages Node. C'est l'outil incontournable pour gérer les packages, installer les dépendances et garantir que votre projet reste à jour avec les bibliothèques dont il a besoin. Mais il y a aussi npx, un autre outil fourni avec npm, qui suscite souvent la question : quelle est la différence entre les deux ?
À première vue, npm et npx semblent vous aider à interagir avec les packages Node.js, mais ils servent des objectifs différents. Dans cet article, nous détaillerons les principales différences entre npm et npx, vous montrerons leur fonctionnement et explorerons quand les utiliser.
Que vous mettiez en place un nouveau projet, exécutiez un script ou que vous soyez simplement curieux de savoir quand utiliser npm par rapport à npx, ce guide vous aidera à comprendre les deux outils et comment ils peuvent s'intégrer dans votre flux de travail de développement.
npm signifie Node Package Manager, et c'est exactement à quoi cela ressemble : un outil pour gérer les packages Node.js. Chaque fois que vous avez besoin d'un nouveau « package » pour votre projet, vous vous tournerez vers npm pour vous aider à l'installer. Ces packages peuvent aller de petites fonctions utilitaires à des frameworks et bibliothèques à part entière.
Mais npm ne sert pas uniquement à installer des bibliothèques. C’est également idéal pour gérer les dépendances et les scripts du projet. Si vous devez verrouiller des versions spécifiques d'une bibliothèque pour éviter des modifications brutales, npm est là pour vous. Il vous permet également de définir des scripts dans votre fichier package.json pour automatiser les tâches courantes telles que tester ou créer votre projet.
Considérez npm comme un magasin numérique de composants logiciels. Lorsque vous démarrez un nouveau projet Node.js, vous aurez besoin de divers outils et bibliothèques pour le créer. Au lieu de réinventer la roue, vous pouvez utiliser npm pour récupérer et installer ces packages prédéfinis. Il fonctionne en maintenant un vaste registre en ligne de packages, chacun avec son nom et sa version uniques.
Lorsque vous utilisez la commande npm install, npm télécharge le package spécifié et ses dépendances, en les plaçant dans un répertoire local nommé node_modules, un endroit central où toutes les dépendances et versions du projet sont suivies. Une installation locale signifie que le package sera disponible uniquement dans le projet où vous l'installez. La commande ressemble à ceci :
npm install <package-name>
Par exemple, si vous souhaitez ajouter la bibliothèque cowsay à votre projet, vous taperez :
npm install cowsay
Ce répertoire est alors accessible à votre projet, vous permettant d'utiliser les fonctionnalités du package dans votre code. Une installation globale met un package à la disposition de l'ensemble de votre système, vous pouvez donc l'utiliser pour n'importe quel projet. Ceci est utile pour les outils de ligne de commande que vous souhaitez exécuter de n'importe où.
Au-delà de la simple installation du package, npm propose également un contrôle de version pour chaque package, qui vous permet de spécifier les versions exactes souhaitées. Ceci est essentiel pour éviter les problèmes potentiels causés par des modifications importantes dans les versions plus récentes.
De plus, npm fournit un moyen de définir des scripts dans package.json : ce sont des commandes qui automatisent des tâches telles que le démarrage d'un serveur, l'exécution de tests ou la création d'un projet. Dans votre package.json, vous pouvez définir un script comme celui-ci :
npm install <package-name>
npx a été introduit avec npm v 5.2.0. Alors que npm consiste uniquement à installer et à gérer des packages, npx consiste à les exécuter.
Considérez npx comme un exécuteur de commandes rapide qui vous permet d'exécuter des packages Node.js sans les installer. npx est particulièrement utile lorsque vous souhaitez utiliser un package une seule fois ou le tester sans l'ajouter définitivement à votre système.
Avant npx, si vous souhaitiez utiliser un outil de ligne de commande à partir d'un package, vous deviez d'abord l'installer globalement. npx simplifie cela en vous permettant d'exécuter l'outil directement à partir du registre npm sans avoir besoin d'une installation globale.
Lorsque vous exécutez une commande avec npx, elle vérifie d'abord votre répertoire node_modules local. Si le package y est trouvé, il est exécuté. Sinon, npx installe temporairement le package, l'exécute, puis le supprime. Cela signifie que vous pouvez utiliser une large gamme d'outils sans encombrer votre système.
Disons que vous souhaitez utiliser create-react-app pour démarrer un nouveau projet React. Normalement, vous devez d'abord l'installer globalement :
npm install cowsay
Ensuite, vous courriez :
{ "scripts": { "start": "node index.js", "test": "jest" } }
Mais avec npx, vous pouvez ignorer l'installation globale et l'exécuter directement :
npm install -g create-react-app
Cette commande télécharge create-react-app, l'exécute et la supprime lorsque vous avez terminé. C'est rapide et pratique et évite que votre système ne soit encombré de packages globaux que vous ne pourriez utiliser qu'une seule fois.
Si vous avez déjà installé un package localement dans votre projet, npx peut vous aider à l'exécuter sans avoir besoin de spécifier le chemin complet vers node_modules. Par exemple, si vous avez installé Jest localement pour le tester, vous pouvez l'exécuter avec npx comme ceci :
create-react-app my-app
npx trouve automatiquement le package dans votre dossier node_modules local et l'exécute, ce qui vous fait gagner du temps et des tracas.
Je pense que la fonctionnalité la plus intéressante de npx est sa capacité à déterminer quel package ou quelle commande vous essayez d'exécuter. Il s'ensuit un processus en trois étapes pour décider comment exécuter n'importe quelle commande :
N.B., par défaut, npx exécutera la dernière version d'un package mais si vous avez besoin d'une version spécifique, vous pouvez également lui indiquer quelle version exécuter.
npm et npx sont tous deux des outils cruciaux dans l'écosystème Node.js, mais ils ont des rôles différents à différents niveaux :
Feature | npm | npx |
Purpose and functionality | Primarily used for installing packages from the npm registry and managing dependencies in Node.js projects. It helps in adding, removing, and updating packages, and maintaining package versioning | Designed to execute Node packages directly without needing to install them globally. It allows users to run packages without cluttering the global or project-specific `node_modules` |
Package installation | Installs packages locally or globally | Executes packages temporarily without installing them permanently |
Temporary usage | Installation with npm persists until explicitly removed. Packages remain in `node_modules` or globally installed paths | Runs packages temporarily and discards them after execution unless otherwise specified |
Usage | `npm install ` | `npx ` |
Script setup | Requires modifications to `package.json` to create custom scripts | No modifications needed in `package.json` for running commands |
Execution of CLI tools | Must install CLI tools globally or locally before using them | Can run CLI tools directly from the npm registry without prior installation |
Project setup | Typically used for project setup involving multiple dependencies and versions. | Ideal for quick project scaffolding or one-time command execution, like `create-react-app` |
Node.js compatibility | Bundled with Node.js for general project and package management | Included with Node.js starting from v 8.2.0, streamlining the execution of packages |
Décider quand utiliser npm ou npx dépend de la tâche et des besoins de votre projet.
Vous devez utiliser npm lorsque vous devez installer et gérer des dépendances de projet cruciales pour le développement ou la production. Étant donné que npm garantit que les packages sont répertoriés dans package.json, vous obtenez un contrôle total sur la gestion des versions et la cohérence au sein de votre projet. C'est également l'outil incontournable pour exécuter des scripts définis dans package.json, ce qui le rend idéal pour des tâches telles que la création, les tests ou l'exécution de votre serveur.
D'un autre côté, npx est idéal pour les commandes rapides et ponctuelles ou les outils de test sans l'engagement d'une installation globale. Si vous souhaitez utiliser un outil une seule fois, comme create-react-app pour démarrer un projet React, npx vous permet de l'exécuter directement sans encombrer votre système. C’est également pratique pour exécuter des packages installés localement sans saisir le chemin complet, simplifiant ainsi votre flux de travail. En bref, utilisez npm pour la gestion des dépendances à long terme et npx pour les tâches temporaires ou l'exécution de packages à la volée.
Le déploiement d'une application Web ou d'un site Web basé sur Node est la partie la plus simple. S'assurer que votre instance Node continue de fournir des ressources à votre application est là où les choses se compliquent. Si vous souhaitez garantir le succès des requêtes adressées au backend ou aux services tiers, essayez LogRocket.
LogRocket est comme un DVR pour applications Web, enregistrant littéralement tout ce qui se passe sur votre site. Au lieu de deviner pourquoi les problèmes surviennent, vous pouvez regrouper et signaler les requêtes réseau problématiques pour comprendre rapidement la cause première.
LogRocket instrumente votre application pour enregistrer les délais de performances de base tels que le temps de chargement des pages, le temps nécessaire au premier octet, les requêtes réseau lentes, et enregistre également les actions/états Redux, NgRx et Vuex. Commencez la surveillance gratuitement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!