web-dev-qa-db-fra.com

Différence entre npx et npm?

Je viens de commencer à apprendre à React et facebook aide à simplifier la configuration initiale en fournissant le projet clé en main suivant.
Lien vers le compte Facebook sur Github: https://github.com/facebook/create-react-app
Si je dois installer le projet squelette, je dois taper npx create-react-app my-app en ligne de commande.
Je me demandais pourquoi le compte facebook de Github avait-il npx create-react-app my-app plutôt que npm create-react-app my-app?

101
Paresh Maniyar

Introduction à npx: un gestionnaire de paquets npm

NPM - Gère paquets mais ne vous simplifie pas la vie exécution aucun.
NPX - Un outil pour exécuter Packages de nœuds.

NPX est livré avec NPM version 5.2+ 

NPM en lui-même ne lance aucun package. il ne gère aucun paquet en fait. Si vous souhaitez exécuter un package à l'aide de NPM, vous devez spécifier ce package dans votre fichier packages.json

Lorsque les exécutables sont installés via les packages npm, npm les relie:

  1. Dans les installations locales, elles sont liées à partir d'un répertoire node_modules/.bin/.
  2. Dans les installations globales, elles sont liées à partir d'un répertoire bin/global (par exemple, /usr/local/bin).

Documentation à lire


NPM:

On peut installer un paquet localement sur un certain projet:

npm install some-package

Maintenant, supposons que vous vouliez que NodeJS exécute ce paquet depuis la ligne de commande:

$ some-package

Ce qui précède sera fail car seuls les packages installés globalement peuvent être exécutés en tapant simplement leur nom et en appuyant sur la touche Entrée. 

Pour résoudre ce problème et le faire fonctionner, vous devez taper le chemin local:

$ ./node_modules/.bin/some-package

Vous pouvez exécuter techniquement un package installé localement en modifiant votre fichier packages.json et en ajoutant ce package dans la section scripts:

{
  "name": "whatever",
  "version": "1.0.0",
  "scripts": {
    "some-package": "some-package"
  }
}

Puis exécutez le script en utilisant npm run-script (ou npm run):

npm run some-package

NPX:

npx vérifiera si <command> existe dans $PATH ou dans les fichiers binaires du projet local et l'exécutera. Ainsi, pour l'exemple ci-dessus, si vous souhaitez exécuter le package some-package installé localement, il vous suffit de taper:

npx some-package

Un autre avantage major de npx est la possibilité d’exécuter un package qui n’était pas déjà installé:

$ npx create-react-app my-app

L'exemple ci-dessus générera une react app boilerplate dans le chemin d'accès de la commande et garantit que vous utilisez toujours la dernière version d'un générateur ou d'un outil de génération sans avoir à mettre à jour votre logiciel à chaque fois que vous êtes sur le point de le faire utilise le.


Questions connexes:

  1. Comment utiliser le paquet installé localement dans node_modules?
  2. NPM: comment créer le dossier ./node_modules/.bin?
  3. Comment lancez-vous un fichier js en utilisant des scripts npm?
141
vsync

NPX:

De https://www.futurehosting.com/blog/npx-makes-life-easier-for-node-developers-plus-node-vulnerability-news/ :

Les développeurs Web peuvent avoir des dizaines de projets en développement machines, et chaque projet a son propre ensemble particulier de npm-installed dépendances. Il y a quelques années, le conseil habituel pour traiter avec CLI Des applications telles que Grunt ou Gulp devaient les installer localement dans chaque projet et aussi globalement afin qu'ils puissent être facilement exécutés à partir de la commande ligne.

Mais l'installation à l'échelle mondiale a causé autant de problèmes qu'elle a résolus. Projets peut dépendre de différentes versions des outils en ligne de commande et polluer le système d’exploitation doté de nombreux outils d’interface de ligne de commande spécifiques au développement n’est pas super non plus. Aujourd'hui, la plupart des développeurs préfèrent installer les outils localement et en rester là.

Les versions locales des outils permettent aux développeurs d'extraire des projets de GitHub sans se soucier des incompatibilités avec globalement installé versions d'outils. NPM peut simplement installer des versions locales et vous êtes bon aller. Mais les installations spécifiques à un projet ne sont pas sans leur problèmes: comment utilisez-vous la bonne version de l’outil sans en spécifiant son emplacement exact dans le projet ou en jouant avec des alias?

C’est le problème que résout npx. Un nouvel outil inclus dans NPM 5.2, npx est un petit utilitaire assez intelligent pour exécuter la bonne application quand c'est appelé depuis un projet.

Si vous voulez exécuter la version de mocha locale au projet, par exemple, vous pouvez lancer npx mocha dans le projet et il fera ce que vous voulez attendre.

Un avantage supplémentaire utile de npx est qu'il installera automatiquement npm paquets qui ne sont pas déjà installés. Donc, en tant que créateur de l’outil Kat Marchán fait remarquer que vous pouvez exécuter npx benny-hill sans avoir à traiter Benny Hill pollue l’environnement mondial.

Si vous souhaitez utiliser npx pour une rotation, mettez-vous à jour avec la version la plus récente de npm.

22
Venkat Ch

npx est un programme d'exécution de package npm (x signifie probablement eXecute). L'utilisation typique est de télécharger et d'exécuter un paquet temporairement ou pour des essais.

create-react-app est un package npm qui ne devrait être exécuté qu'une seule fois dans le cycle de vie d'un projet. Par conséquent, il est préférable d’utiliser npx pour l’installer et l’exécuter en une seule étape.

Comme indiqué dans la page de manuel https://www.npmjs.com/package/npx , npx, vous pouvez exécuter des commandes dans le PATH ou depuis node_modules/.bin par défaut.

Note: Avec quelques recherches, nous pouvons constater que create-react-app pointe sur un fichier Javascript (éventuellement vers /usr/lib/node_modules/create-react-app/index.js sur les systèmes Linux) qui est exécuté dans l'environnement de noeud. C'est simplement un outil global qui effectue certaines vérifications. La configuration proprement dite est effectuée par react-scripts, dont la dernière version est installée dans le projet. Reportez-vous à https://github.com/facebook/create-react-app pour plus d'informations.

19
dww

npx exécute une commande d'un package sans l'installer explicitement.

Cas d'utilisation:

  • Vous ne souhaitez pas installer de packages ni globalement ni localement.
  • Vous n'avez pas la permission de l'installer globalement.
  • Je veux juste tester certaines commandes.

Syntaxe:

npx [options] [-p|--package <package>] <command> [command-arg]...

Par exemple:

Start a HTTP Server      : npx http-server
Lint code                : npx eslint ./src
Minify JS                : npx -p uglify-js uglifyjs -o app.min.js app.js common.js
Minify CSS               : npx clean-css-cli -o style.min.css css/bootstrap.css style.css
Minify HTML              : npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace
Scan for open ports      : npx evilscan 192.168.1.10 --port=10-9999
Cast video to Chromecast : npx castnow http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4
9
Ninh Pham

NPM est un gestionnaire de packages, vous pouvez installer les packages node.js à l'aide de NPM.

NPX est un outil pour exécuter les packages node.js.

Peu importe que vous ayez installé ce paquet globalement ou localement. NPX l'installera temporairement et l'exécutera. NPM peut également exécuter des packages si vous configurez un fichier package.json et l'incluez dans la section script.

Donc, souvenez-vous de cela, si vous souhaitez vérifier/exécuter rapidement un package de nœuds sans installation locale ou globale, utilisez NPX.

5
cherankrish

Voici un exemple de NPX en action: npx cowsay hello

Si vous tapez cela dans votre terminal bash, vous verrez le résultat. L'avantage de ceci est que npx a installé temporairement cowsay. Il n'y a pas de pollution des colis puisque cowsay n'est pas installé en permanence. C'est idéal pour les paquets uniques où vous voulez éviter leur pollution. 

Comme mentionné dans d'autres réponses, npx est également très utile dans les cas où (avec npm) le paquet doit être installé puis configuré avant d'être exécuté. Par exemple. au lieu d'utiliser npm pour installer puis configurer le fichier json.package puis appeler la commande d'exécution configurée, utilisez simplement npx. Un exemple concret: Npx create-react-app my-app

2
Risteard

Définition simple:

npm - Gestionnaire de paquets Javascript

npx - Exécute les fichiers binaires du paquet npm

0
Yassine Qoraiche