Wenn Sie mit Node.js gearbeitet haben, sind Sie wahrscheinlich sowohl auf npm als auch auf npx gestoßen.
Obwohl sie ähnlich klingen und beide integraler Bestandteil des Node.js-Ökosystems sind, dienen sie unterschiedlichen Zwecken. In diesem Beitrag werden die Unterschiede zwischen npm und npx untersucht und Ihnen geholfen zu verstehen, wann und warum Sie beide verwenden sollten.
NPM, kurz für Node Package Manager, ist der Standardpaketmanager für Node.js. Es ermöglicht Entwicklern, Pakete (Bibliotheken oder Codemodule) in ihren Projekten zu installieren, zu teilen und zu verwalten.
Hier sind einige häufige Aufgaben, bei denen npm hilft:
npm install
Verwalten von Paketversionen: Sperren bestimmter Versionen von Bibliotheken, um konsistente Builds sicherzustellen.
Projektspezifische Skripts ausführen: Definiert in der Datei package.json.
npm run
npx ist ein Tool, das in NPM-Version 5.2.0 (Juli 2017) eingeführt wurde. Während npm Abhängigkeiten und Pakete verwaltet, ist npx darauf ausgelegt, Node.js-Pakete, insbesondere CLI-Tools, auszuführen, ohne sie global zu installieren.
1. Paketinstallation vs. Ausführung
npm install -g create-react-app create-react-app my-app
npx create-react-app my-app
Dies spart Zeit und Speicherplatz, da Sie die Installation von Paketen vermeiden, die Sie möglicherweise nur einmal verwenden.
2. Globale Pakete
Wenn Sie npm verwenden, werden globale Pakete installiert und bleiben auf Ihrem System bestehen, was Ihre Umgebung manchmal überladen kann.
Mit npx können Sie ein Paket ausführen, ohne sich Gedanken darüber machen zu müssen, dass es dauerhaft auf Ihrem System verbleibt.
Beispiel für die globale Installation eines Pakets mit npm:
npm install -g typescript tsc --version
Mit npx ist keine globale Installation notwendig:
npx tsc --version
3. Automatische Paketbearbeitung
Wenn Sie einen Befehl mit npx ausführen, prüft es automatisch, ob das Paket lokal oder global existiert, und wenn nicht, lädt es es herunter und führt es vorübergehend aus. Dies ist besonders nützlich für die Ausführung einmaliger Aufgaben.
Zum Beispiel:
npx cowsay "Hello, World!"
Dadurch wird das Cowsay-Paket heruntergeladen, wenn es nicht installiert ist, es ausgeführt und anschließend bereinigt.
4. Ausführbare Dateien ohne Skripte paketieren
Wenn Sie einen in package.json-Skripts definierten Befehl mit npm ausführen, schreiben Sie:
npm run my-script
Aber mit npx können Sie ausführbare Befehle direkt ausführen:
npx my-script
Dies ist besonders nützlich, wenn das Skript nicht explizit in package.json definiert ist.
– Abhängigkeiten verwalten: Verwenden Sie npm zum Installieren, Aktualisieren und Entfernen von Projektabhängigkeiten.
– Ausführen projektspezifischer Skripte: Definiert in package.json und auf Ihr Projekt zugeschnitten.
– Paketversionen verwalten: Sperren bestimmter Bibliotheksversionen, um die Projektkonsistenz aufrechtzuerhalten.
– Einmalige Paketausführung: Verwenden Sie npx für Pakete, die Sie nicht global installieren möchten, z. B. CLI-Tools, die Sie nur einmal verwenden.
– Ausführbare Dateien ausführen: Für Befehle wie „create-react-app“ können Sie diese mit npx ohne globale Installation ausführen.
- Testen verschiedener Versionen: Führen Sie schnell eine bestimmte Version eines Tools aus, ohne es installieren zu müssen.
Schließlich sind sowohl npm als auch npx wesentliche Werkzeuge im Node.js-Ökosystem, dienen jedoch unterschiedlichen Zwecken. Verwenden Sie npm zum Verwalten der Abhängigkeiten Ihres Projekts und npx zum Ausführen von Paketen ohne permanente Installation.
Dieser kleine Unterschied kann Ihren Arbeitsablauf effizienter machen, Zeit sparen und unnötige globale Installationen vermeiden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3