npm vs npx - Was ist der Unterschied?

Wenn Sie jemals Node.js verwendet haben, müssen Sie sicher npm verwendet haben .

npm (Node Package Manager) ist der Abhängigkeits- / Paketmanager, den Sie bei der Installation von Node.js sofort erhalten. Entwickler können damit Pakete sowohl global als auch lokal installieren.

Manchmal möchten Sie sich vielleicht ein bestimmtes Paket ansehen und einige Befehle ausprobieren. Sie können dies jedoch nicht tun, ohne die Abhängigkeiten in Ihrem lokalen node_modulesOrdner zu installieren .

Das ist , wo npx kommt.

In diesem Artikel werden wir uns die Unterschiede zwischen npm und npx ansehen und lernen, wie wir das Beste aus beiden herausholen können .

Lassen Sie uns zunächst verstehen, was npm eigentlich ist und was wir damit machen können.

npm der Paketmanager

npm ist ein paar Dinge. In erster Linie ist es ein Online-Repository für die Veröffentlichung von Open-Source-Projekten von Node.js.

Zweitens ist es ein CLI-Tool, mit dem Sie diese Pakete installieren und ihre Versionen und Abhängigkeiten verwalten können. Es gibt Hunderttausende von Node.js Bibliotheken und Anwendungen auf npm und viele weitere werden jeden Tag hinzugefügt.

npm selbst führt keine Pakete aus. Wenn Sie ein Paket mit npm ausführen möchten, müssen Sie dieses Paket in Ihrer package.jsonDatei angeben .

Wenn ausführbare Dateien über npm-Pakete installiert werden, erstellt npm Links zu diesen:

  • Bei lokalen Installationen werden Links im ./node_modules/.bin/Verzeichnis erstellt
  • Bei globalen Installationen werden Links aus dem globalen bin/Verzeichnis erstellt (z. B. /usr/local/binunter Linux oder unter %AppData%/npmWindows).

Um ein Paket mit npm auszuführen, müssen Sie entweder den lokalen Pfad wie folgt eingeben:

$ ./node_modules/.bin/your-package

Oder Sie können ein lokal installiertes Paket ausführen, indem Sie es package.jsonwie folgt in Ihre Datei im Abschnitt "Skripte" einfügen:

{ "name": "your-application", "version": "1.0.0", "scripts": { "your-package": "your-package" } }

Anschließend können Sie das Skript ausführen mit npm run:

npm run your-package

Sie können sehen, dass das Ausführen eines Pakets mit einfachem npm einige Zeremonien erfordert.

Glücklicherweise ist hier npx nützlich.

npx der Paketläufer

Seit npm Version 5.2.0 ist npx mit npm vorgebündelt. So ist es heutzutage so ziemlich ein Standard.

npx ist auch ein CLI-Tool, dessen Zweck es ist, die Installation und Verwaltung von Abhängigkeiten, die in der npm-Registrierung gehostet werden, zu vereinfachen.

Es ist jetzt sehr einfach, jede Art von Node.js-basierter ausführbarer Datei auszuführen, die Sie normalerweise über npm installieren würden.

Sie können den folgenden Befehl ausführen, um festzustellen, ob er bereits für Ihre aktuelle npm-Version installiert ist:

$ which npx

Wenn dies nicht der Fall ist, können Sie es folgendermaßen installieren:

$ npm install -g npx

Sobald Sie sicher sind, dass Sie es installiert haben, sehen wir uns einige Anwendungsfälle an, die npx äußerst hilfreich machen.

Führen Sie ein lokal installiertes Paket einfach aus

Wenn Sie ein lokal installiertes Paket ausführen möchten, müssen Sie nur Folgendes eingeben:

$ npx your-package

npx prüft, ob es in oder in den lokalen Projekt-Binärdateien vorhanden ist oder vorhanden ist $PATH, und führt es in diesem Fall aus.

Führen Sie Pakete aus, die zuvor nicht installiert wurden

Ein weiterer großer Vorteil ist die Möglichkeit, ein Paket auszuführen, das zuvor nicht installiert wurde.

Manchmal möchten Sie nur einige CLI-Tools verwenden, aber Sie möchten sie nicht global installieren, nur um sie zu testen. Dies bedeutet, dass Sie Speicherplatz sparen und diese nur dann ausführen können, wenn Sie sie benötigen. Dies bedeutet auch, dass Ihre globalen Variablen weniger verschmutzt sind.

Führen Sie Code direkt von GitHub aus

führe-gist-script-with-npx aus

Das ist ziemlich toll.

Sie können npx verwenden, um alle GitHub-Gists und -Repositorys auszuführen. Konzentrieren wir uns auf die Ausführung eines GitHub-Gists, da es einfacher ist, einen zu erstellen.

Das grundlegendste Skript besteht aus der Haupt-JS-Datei und a package.json. Nachdem Sie die Dateien eingerichtet haben, müssen Sie nur den npx mit dem Link zu diesem Kern ausführen, wie im obigen Bild gezeigt.

Hier finden Sie den Code, den ich für dieses Beispiel verwendet habe.

Stellen Sie sicher, dass Sie alle Skripte sorgfältig gelesen haben, bevor Sie sie ausführen, um schwerwiegende Probleme zu vermeiden, die aufgrund von Schadcode auftreten können.

Testen Sie verschiedene Paketversionen

Mit npx ist es extrem einfach, verschiedene Versionen eines Node.js-Pakets oder -Moduls zu testen. Um diese großartige Funktion zu testen, werden wir das create-react-appPaket lokal installieren und eine kommende Version testen.

Dadurch werden einige dist-Tags am Ende der Ausgabe aufgelistet. Dist-Tags bieten Aliase für Versionsnummern, was die Eingabe erheblich vereinfacht.

$ npm v create-react-app
Erstelle-reagiere-App-dist-Tags

Verwenden Sie npx, um das nextdist-Tag auszuprobieren, mit dem create-react-appdie App in einem Sandbox-Verzeichnis erstellt wird.

$ npx [email protected] sandbox

npx installiert vorübergehend die nächste Version von create-react-appund wird dann ausgeführt, um die App zu erstellen und ihre Abhängigkeiten zu installieren.

Nach der Installation können wir wie folgt zur App navigieren:

$ cd sandbox

und starten Sie es dann mit diesem Befehl:

$ npm start
erstelle-reagiere-app-npx-nächste-version

Die React-App wird automatisch in Ihrem Standardbrowserfenster geöffnet.

Jetzt haben wir eine App, die auf der nächsten Version des create-react-appPakets läuft !

Index-Seite-reagieren-App

Fazit

npx hilft uns, Versionsverwaltung, Abhängigkeitsprobleme und die Installation unnötiger Pakete zu vermeiden, die wir nur ausprobieren möchten.

Es bietet auch eine klare und einfache Möglichkeit, Pakete, Befehle, Module und sogar GitHub-Listen und -Repositorys auszuführen.

Wenn Sie npx noch nicht verwendet haben, ist jetzt ein guter Zeitpunkt, um zu beginnen!

Dies wurde ursprünglich in meinem Blog veröffentlicht.

Sie können mich auf Twitter und Facebook erreichen und fragen.