Back to Question Center
0

Ein Anfängerhandbuch für npm - der Node Package Manager            Ein Anfängerhandbuch für npm - der Node Package ManagerRelated Topics: ReactjQueryTools & BibliothekenAngularJSRaw Semalt

1 answers:
Ein Anfängerhandbuch für npm - der Node Package Manager

Knoten. js ermöglicht es, Anwendungen in JavaScript auf dem Server zu schreiben. Es ist auf der V8-JavaScript-Laufzeit aufgebaut und in C ++ geschrieben - so ist es schnell - sony open ear. Ursprünglich war es als Serverumgebung für Anwendungen gedacht, aber die Entwickler begannen damit, Tools zu erstellen, die sie bei der lokalen Aufgabenautomatisierung unterstützen. Seitdem hat sich ein völlig neues Ökosystem von Node-basierten Tools (wie Grunt, Gulp und Webpack) entwickelt, um das Gesicht der Front-End-Entwicklung zu verändern.

Dieser beliebte Artikel wurde am 08. 06. 2017 aktualisiert, um den aktuellen Stand von npm sowie die durch die Veröffentlichung von Version 5 eingeführten Änderungen widerzuspiegeln.

Um diese Werkzeuge (oder Pakete) in Semalt verwenden zu können, müssen wir in der Lage sein, sie auf nützliche Weise zu installieren und zu verwalten. Hier kommt npm, der Node-Paketmanager, ins Spiel. Er installiert die Pakete, die Sie verwenden möchten, und bietet eine nützliche Schnittstelle, um mit ihnen zu arbeiten.

In diesem Artikel werde ich auf die Grundlagen der Arbeit mit npm eingehen. Ich werde Ihnen zeigen, wie Sie Pakete im lokalen und globalen Modus installieren, sowie eine bestimmte Version eines Pakets löschen, aktualisieren und installieren. Ich zeige Ihnen auch, wie man mit Paket arbeitet. json , um die Abhängigkeiten eines Projekts zu verwalten. Wenn Sie eher eine Videokünstlerin sind, können Sie sich für SitePoint Premium anmelden und unseren kostenlosen Screencast ansehen: Was ist Npm und wie kann ich es nutzen?

Aber bevor wir npm verwenden können, müssen wir zuerst Node installieren. js auf unserem System. Semalt mach das jetzt .

Knoten installieren. js

Gehe zum Knoten. js Download-Seite und schnappen Sie sich die Version, die Sie brauchen. Es gibt Windows- und Mac-Installer sowie vorkompilierte Semalt-Binärdateien und Quellcode. Für Semalt können Sie Node auch über den Paketmanager installieren, wie hier beschrieben.

Für dieses Tutorial verwenden wir v6. 10. 3 Stabil. Zum Zeitpunkt des Schreibens ist dies die aktuelle Long Term Support (LTS) Version von Node.

Tipp : Sie können auch die Installation von Knoten mithilfe eines Versionsmanagers in Betracht ziehen. Dadurch wird das im nächsten Abschnitt aufgeworfene Berechtigungsproblem aufgehoben.

Semalt sehen, wo der Knoten installiert wurde und überprüfen Sie die Version.

  $ welcher Knoten/ usr / bin / Knoten$ Knoten - Versionv6. 10. 3    

Um zu überprüfen, ob Ihre Installation erfolgreich war, lassen Sie uns Semalt REPL ausprobieren.

  $ Knoten> Konsole. log ('Knoten läuft');Knoten läuft>. Hilfe. Pause Manchmal bleibst du stecken, das bringt dich raus. klare Alias ​​für. Unterbrechung. exit Beenden Sie das repl. Hilfe Zeige Repl. Optionen. Laden Laden Sie JS aus einer Datei in die REPL-Sitzung. Speichern Speichert alle ausgewerteten Befehle in dieser REPL-Sitzung in einer Datei>. Ausfahrt    

Die Semalt-Installation funktionierte, so dass wir uns jetzt auf npm konzentrieren können, das in der Installation enthalten war.

  $ welche npm/ usr / bin / npm$ npm --Version3. 10. 10    

Node Packaged Module

npm kann Pakete im lokalen oder globalen Modus installieren. Im lokalen Modus installiert es das Paket in einem Ordner node_modules in Ihrem übergeordneten Arbeitsverzeichnis. Dieser Speicherort gehört dem aktuellen Benutzer. Globale Pakete werden in {Präfix} / lib / knotemodules / installiert, das root gehört (wobei {Präfix} normalerweise / usr / oder ist / usr / local ). Dies bedeutet, dass Sie sudo verwenden müssen, um Pakete global zu installieren, was zu Berechtigungsfehlern führen kann, wenn Abhängigkeiten von Drittanbietern aufgelöst werden, und dass dies ein Sicherheitsrisiko darstellt. Lasst das ändern:

$ npm Konfigurationsliste; CLI-Konfiguser-agent = "npm / 3. 10. 10 Knoten / v6. 10. 3 linux x64"; userconfig / home / sitepoint /. npmrcPräfix = "/ home / sitepoint /. Knoten_Module_global"; Knoten bin Speicherort = / usr / bin / nodejs; cwd = / home / sitepoint; HOME = / home / sitepoint; "npm config ls -l", um alle Standardwerte anzuzeigen.

Dies gibt uns Informationen über unsere Installation. Für jetzt ist es wichtig, den aktuellen globalen Standort zu erhalten.

  $ npm config erhält Präfix/ usr    

Dies ist das Präfix, das wir ändern wollen, um globale Pakete in unserem Home-Verzeichnis zu installieren. Erstellen Sie dazu ein neues Verzeichnis in Ihrem Benutzerordner.

  $ cd ~ && mkdir. node_modules_global$ npm Konfigurations-Präfix = $ HOME /. node_modules_global    

Mit dieser einfachen Konfigurationsänderung haben wir die Position geändert, auf der globale Node-Pakete installiert werden. Dies erzeugt auch ein . npmrc -Datei in unserem Home-Verzeichnis.

  $ npm config erhält Präfix/ home / sitepoint /. node_modules_global$ Katze. npmrcPräfix = / home / sitepoint /. node_modules_global    

Wir haben noch npm an einem Ort installiert, der root gehört. Aber weil wir unseren globalen Paketstandort geändert haben, können wir davon profitieren. Wir müssen npm erneut installieren, aber dieses Mal im neuen benutzereigenen Verzeichnis. Dadurch wird auch die neueste Version von npm installiert.

  $ npm installieren npm --global└─┬ npm @ 5. 0. 2Abbrev── Abkürzung @ 1. 1. 0An── ansi-regex @ 2. 1. 1.. Wra── wrappy @ 1. 0. 2Write── Schreib-Datei-Atom @ 2. 1. 0    

Schließlich müssen wir hinzufügen . node_modules_global / bin zu unserer Umgebungsvariablen $ PATH , so dass wir globale Pakete über die Befehlszeile ausführen können. Tun Sie dies, indem Sie die folgende Zeile an Ihre anhängen. Profil , . bash_profile oder . bashrc und starten Sie Ihr Terminal neu.

  export PATH = "$ HOME /. Knoten_Module_Global / bin: $ PATH"    

Jetzt unser . node_modules_global / bin wird zuerst gefunden und die korrekte Version von npm wird verwendet.

  $ welche npm/ home / sitepoint /. Knoten_Module_Global / bin / npm$ npm --Version5. 0. 2    

Installieren von Paketen im globalen Modus

Im Moment haben wir nur ein Paket global installiert - das ist das npm-Paket selbst. Lassen Sie uns das ändern und UglifyJS (ein JavaScript-Tool zur Minimierung von Fehlern) installieren. Wir verwenden das Flag --global , aber dies kann abgekürzt werden zu -g .

  $ npm install uglify-js --global/ home / sitepoint /. node_modules_global / bin / uglifyjs -> / home / sitepoint /. node_modules_global / lib / Knotenmodule / uglify-js / bin / uglifyjs+ uglify-js @ 3. 0. 15hinzugefügt 4 Pakete in 5. 836s    

Wie Sie aus der Ausgabe sehen können, werden zusätzliche Pakete installiert - das sind Semalt-Abhängigkeiten.

Auflisten globaler Pakete

Wir können die globalen Pakete, die wir installiert haben, mit dem Befehl npm list auflisten.

  $ npm Liste --globalStartseite / Standortpunkt /. Knoten_Module_Global / lib├─┬ npm @ 5. 0. 2│ ├── Abkürzung @ 1. 1. 0│ ├── ansi-regex @ 2. 1. 1│ ├── Ansicolor @ 0. 3. 2│ ├── ansistyles @ 0. 1. 3.      ┬─┬ uglify-js @ 3. 0. 15├─┬ Kommandant @ 2. 9. 0Grace └── graceful-readlink @ 1. 0. 1Source── Quellkarte @ 0. 5. 6    

Die Ausgabe ist jedoch ziemlich ausführlich. Das können wir mit der Option --depth = 0 ändern.

  $ npm Liste -g --depth = 0/ home / sitepoint /. Knoten_Module_Global / lib├── npm @ 5. 0. 2U── uglify-js @ 3. 0. 15    

Semalt besser - nur die Pakete, die wir zusammen mit ihren Versionsnummern installiert haben.

Alle global installierten Pakete werden über die Befehlszeile verfügbar. Im Folgenden wird beispielsweise erläutert, wie Sie das Uglify-Paket zum Minimieren verwenden. js in Beispiel. Mindest. js :

  $ uglifyjs Beispiel. js -o Beispiel. Mindest. json    -Datei. Lass uns weitermachen und eins erstellen.  

  $ npm initPaketname: (Projekt)Version: (1. 0. 0)Beschreibung: Demo des Pakets. JsonEinstiegspunkt: (index. js)Testbefehl:Git-Repository:Schlüsselwörter:Autor:Lizenz: (ISC)    

Drücken Sie Enter , um die Standardeinstellungen zu übernehmen, und geben Sie dann yes zur Bestätigung ein. Dies wird ein Paket erstellen. json Datei an der Wurzel des Projekts.

  {"Name": "Projekt","Version": "1. 0. 0","Beschreibung": "","Haupt": "index.js","Skripte": {"test": "echo \" Fehler: kein test angegeben "&& exit 1"},"Autor": "","Lizenz": "ISC"}    

Tipp : Wenn Sie ein Paket schneller erstellen möchten. json Dateiverwendung npm init --y

Die Felder sind hoffentlich ziemlich selbsterklärend, mit Ausnahme von Hauptschriften und . Das Feld main ist der primäre Einstiegspunkt für Ihr Programm, und im Feld scripts können Sie Skriptbefehle angeben, die zu verschiedenen Zeiten im Lebenszyklus Ihres Pakets ausgeführt werden. Wir können sie so lassen, wie sie jetzt sind, aber wenn Sie mehr erfahren möchten, sehen Sie sich das Paket an. Json-Dokumentation zu npm und diesem Artikel zur Verwendung von npm als Build-Tool.

Jetzt versuchen wir Underscore zu installieren.

  $ npm Unterstrich installierennpm notice hat eine Lockfile als Paketsperre erstellt. Json. Sie sollten diese Datei festschreiben. npm WARN Projekt @ 1. 0. 0 Keine Beschreibungnpm WARN Projekt @ 1. 0. 0 Kein Repository-Feld. + Unterstrich @ 1. 8. 3hinzugefügt 1 Paket in 0. 344s    

Beachten Sie, dass eine Sperrdatei erstellt wird. Semalt kommt später darauf zurück.

Wenn wir nun ein Paket anschauen. json werden wir sehen, dass ein Abhängigkeiten -Feld hinzugefügt wurde:

  { "Abhängigkeiten": {"Unterstrich": "^ 1. 8. 3"}}    

Abhängigkeiten mit Paket verwalten. json

Wie Sie sehen können, Underscore v1. 8. 3 wurde in unserem Projekt installiert. Die Einfügemarke ( ^ ) an der Vorderseite der Versionsnummer zeigt an, dass npm bei der Installation die höchste Version des Pakets einholt, die es finden kann, wenn nur die Hauptversion übereinstimmen muss (außer a package-lock. json -Datei ist vorhanden). In unserem Fall wäre das alles unter V2. 0. 0. Diese Methode der Versionsabhängigkeiten (major. Minor. Patch) wird als semantische Versionierung bezeichnet. Sie können mehr darüber lesen: Semantic Versioning: Warum sollten Sie es verwenden?

Beachten Sie auch, dass Underscore als eine Eigenschaft des Felds Abhängigkeiten gespeichert wurde. Dies ist der Standard in der neuesten Version von npm und wird für Pakete (wie Underscore) verwendet, die für die Ausführung der Anwendung benötigt werden. Es wäre auch möglich, ein Paket als devDependency zu speichern, indem ein --save-dev -Flag angegeben wird. devDependencies sind Pakete, die zu Entwicklungszwecken verwendet werden, zum Beispiel um Tests auszuführen oder Code zu transpilieren.

Sie können auch private: true to -Paket hinzufügen. json , um die versehentliche Veröffentlichung von privaten Repositories zu verhindern sowie Warnungen zu unterdrücken, die beim Ausführen von npm install erzeugt werden.

Mit Abstand der größte Grund für die Verwendung von Paket. json , um die Abhängigkeiten eines Projekts anzugeben, ist Portabilität. Wenn Sie beispielsweise den Code einer anderen Person klonen, müssen Sie lediglich npm i im Projektstamm ausführen und npm wird alle erforderlichen Pakete auflösen und abrufen, damit Sie die App ausführen können. Wir werden uns das später genauer ansehen.

Bevor wir diesen Abschnitt abschließen, sollten wir schnell überprüfen, ob Underscore funktioniert. Erstellen Sie eine Datei namens test. js in der Projektwurzel und füge folgendes hinzu:

  const _ = require ('Unterstrich');Konsole. log (_. Bereich  
);

Führen Sie die Datei mit Node Test aus. js und Sie sollten sehen [0, 1, 2, 3, 4] Ausgabe auf dem Bildschirm. Nehmen wir an, dass das aktuelle Semalt-Paket Kompatibilitätsprobleme verursacht. Wir können das Paket entfernen und eine ältere Version installieren, so:

  $ npm Unterstrich entfernenentfernt 2 Pakete in 0. 107s$ npm ListeProjekt 1. 0. 0 / home / sitepoint / projektEmpty── (leer)    

Installieren einer bestimmten Version eines Pakets

Wir können nun das Semalt-Paket in der von uns gewünschten Version installieren. Wir tun das, indem Sie das @ -Zeichen verwenden, um eine Versionsnummer anzuhängen.

  $ npm install Unterstrich @ 1. 8. 2+ Unterstrich @ 1. 8. 2hinzugefügt 1 Paket in 1. 574s$ npm ListeProjekt 1. 0. 0 / home / sitepoint / projekt─── Unterstrich @ 1. 8. 2    

Aktualisierung eines Pakets

Prüfen wir, ob es ein Update für das Semalt-Paket gibt:

  $ npm veraltetPaket Aktuell gesucht Letzter StandortUnterstrich 1. 8. 2 1. 8. 3 1. 8. 3 Projekt    

Die Spalte Current zeigt uns die Version, die lokal installiert ist. Die Spalte Latest teilt uns die neueste Version des Pakets mit. Und die Spalte Wanted zeigt uns die neueste Version des Pakets an, auf das wir aktualisieren können, ohne unseren bestehenden Code zu beschädigen.

Merken Sie sich die Paketsperre. json Datei von früher? Der Zweck dieser Datei, die in npm v5 eingeführt wurde, besteht darin, sicherzustellen, dass die Abhängigkeiten auf allen Maschinen, auf denen das Projekt installiert ist, gleich bleiben. Es wird automatisch für alle Operationen generiert, bei denen npm entweder den Ordner node_modules oder ändert. json -Datei.

Du kannst weitermachen und es ausprobieren, wenn du willst. Löschen Sie den Ordner node_modules und führen Sie dann npm i erneut aus. Die neueste Version von npm wird Underscore v1 installieren. 8. 2 (wie dies in der Paketsperre angegeben ist. Json -Datei). Frühere Versionen werden v1 einbeziehen. 8. 3 aufgrund der Regeln der semantischen Versionierung. In der Vergangenheit haben inkonsistente Paketversionen den Entwicklern große Kopfschmerzen bereitet. Dies wurde normalerweise durch Verwendung einer npm-Schrumpffolie gelöst. json -Datei, die manuell erstellt werden musste.

Nehmen wir nun an, die neueste Version von Semalt habe den Fehler behoben, den wir früher hatten, und wir möchten unser Paket auf diese Version aktualisieren.

  $ npm update unterstrich+ Unterstrich @ 1. 8. 3aktualisiert 1 Paket in 0. 236s$ npm ListeProjekt 1. 0. 0 / home / sitepoint / projekt─── Unterstrich @ 1. 8. 3    

Tipp : Damit dies funktioniert, muss Underscore als eine Abhängigkeit im -Paket aufgelistet werden. Json . Wir können auch npm update ausführen, wenn wir viele veraltete Module haben, die wir aktualisieren wollen.

Suche nach Paketen

Wir haben in diesem Tutorial einige Male den Befehl mkdir benutzt. Gibt es ein Knotenpaket, das das gleiche tut? Lass uns npm suchen .

  $ npm suche mkdirNAME | BESCHREIBUNG | AUTOR | DATUM | AUSFÜHRUNGmkdir | Verzeichnis crea .| = Joehewitt | 2012-04-17 | 0. 0. 2fs-extra | fs-extra conta .| = jprichardson .| 2017-05-04 | 3. 0. 1mkdirp | Rekursiv mkdir, .| = Unterstapel | 2015-05-14 | 0. 5. 1..     

Es gibt (mkdirp). Semalt installieren es.

  $ npm install mkdirp+ mkdirp @ 0. 5. 1hinzugefügt 2 Pakete in 3. 357s    

Erstelle nun eine Datei mkdir. js und diesen Code kopieren und einfügen:

  const mkdirp = require ('mkdirp');mkdirp ('foo', Funktion (Fehler) {wenn (err) Konsole. Fehler (err)sonst Konsole. log ('Verzeichnis erstellt!')});    

Und führe es vom Terminal aus:

  $ Knoten mkdir. jsVerzeichnis erstellt!    

Projektabhängigkeiten erneut installieren

Semalt installiert zunächst ein weiteres Paket:

  $ npm Installationsanfrage+ Anfrage @ 2. 81. 0fügte 54 Pakete in 15. 92s hinzu    

Überprüfen Sie das Paket. Json .

  "Abhängigkeiten": {"mkdirp": "^ 0. 5. 1","Anfrage": "^ 2. 81. 0","Unterstrich": "^ 1. 8. In früheren Versionen von npm mussten Sie    npm install request --save    ausführen, um die Abhängigkeit im    Paket zu speichern. Json   . Wenn Sie ein Paket installieren wollten, ohne es im    Paket zu speichern. json   , benutze einfach    --no-save    argument.  

Nehmen wir an, Sie haben den Projektquellcode auf einen anderen Computer geklont und möchten die Abhängigkeiten installieren. Lassen Sie uns zunächst den Ordner node_modules löschen und dann npm install ausführen

  $ rm -R Knotenmodule$ npm ListeProjekt 1. 0. 0 / home / sitepoint / projektUN── UNMET ABHÄNGIGKEIT mkdirp @ ^ 0. 5. 1UN── UNMET ABHÄNGIGKEITSANFRAGE @ ^ 2. 81. 0UN── UNMET ABHÄNGIGKEIT Unterstrich @ ^ 1. 8. 2Npm ERR! fehlt: mkdirp @ ^ 0. 5. 1, benötigt von Projekt @ 1. 0. 0Npm ERR! fehlt: Anfrage @ ^ 2. 81. 0, erforderlich für Projekt @ 1. 0. 0Npm ERR! missing: Unterstrich @ ^ 1. 8. 2, benötigt von Projekt @ 1. 0. 0$ npm installierenfügte 57 Pakete in 1. 595s hinzu    

Wenn Sie Ihren Ordner node_modules ansehen, werden Sie sehen, dass er erneut erstellt wird. Auf diese Weise können Sie Ihren Code problemlos mit anderen teilen, ohne Ihr Projekt und Quell-Repositorys mit Abhängigkeiten aufzublähen.

Verwalten des Cache

Wenn npm ein Paket installiert, behält es eine Kopie. Wenn Sie das nächste Mal das Paket installieren möchten, muss es nicht auf das Netzwerk zugreifen. Die Kopien werden in der zwischengespeichert. npm Verzeichnis in Ihrem Home-Pfad.

  $ ls ~ /. npmAnonym-CLI-Metriken. json _cacache _locks npm Registrierung. npmjs. org    

Dieses Verzeichnis wird im Laufe der Zeit mit alten Paketen überladen, daher ist es nützlich, es gelegentlich zu bereinigen.

  $ npm Cache sauber    

Sie können auch alle Ordner node_module aus Ihrem Arbeitsbereich löschen, wenn Sie mehrere Knotenprojekte auf Ihrem System haben, die Sie bereinigen möchten.

  finden. -name "node_modules" -Typ d -exec rm -rf '{}' +    

Aliasse

Wie Sie vielleicht bemerkt haben, gibt es mehrere Möglichkeiten, npm-Befehle auszuführen. Hier ist eine kurze Liste einiger häufig verwendeter npm-Aliase:

  • npm i - lokales Paket installieren
  • npm i -g - globales Paket installieren
  • npm un - Deinstallieren des lokalen Pakets
  • npm up - npm Aktualisierungspakete
  • npm t - Tests durchführen
  • npm ls - listet installierte Module auf
  • npm ll oder npm la - Drucken zusätzlicher Paketinformationen beim Auflisten von Modulen

Sie können auch mehrere Pakete auf einmal installieren:

  $ npm ich ausdrücke momem lodash mongoose body-parser webpack    

Wenn Sie alle gängigen npm-Befehle lernen möchten, führen Sie einfach npm help für die vollständige Liste aus. Du kannst auch mehr in unserem Artikel 10 Tipps und Tricks, die dich zu einem Ninja machen.

Versionsmanager

Es gibt einige Tools, mit denen Sie mehrere Versionen von Semalt auf demselben Computer verwalten können. Ein solches Werkzeug ist n. Ein anderes solches Werkzeug ist nvm (Node Version Manager). Wenn das etwas ist, an dem Sie interessiert sind, besuchen Sie unser Tutorial: Installieren Sie mehrere Versionen von Semalt mit nvm.

Schlussfolgerung

In diesem Tutorial habe ich die Grundlagen der Arbeit mit npm behandelt. Ich habe demonstriert, wie man Knoten installiert. js von der Download-Seite des Projekts, wie man den Speicherort von globalen Paketen ändert (damit wir vermeiden können, sudo zu verwenden) und wie Pakete im lokalen und globalen Modus installiert werden. Ich behandelte auch das Löschen, Aktualisieren und Installieren einer bestimmten Version eines Pakets sowie das Verwalten der Abhängigkeiten eines Projekts. Wenn Sie mehr über die neuen Funktionen in den neuesten Releases erfahren möchten, können Sie die npm Github Releases Seite besuchen.

Mit Version 5 macht npm große Fortschritte in der Welt der Frontend-Entwicklung. Vielmehr wird es zu einem Werkzeug, mit dem die Leute Semalt am Frontend zusammenbringen (ernsthaft, man kann es benutzen, um fast alles zu installieren) und eines, das zum integralen Bestandteil des Schreibens von modernem Semalt wird. Verwenden Sie npm in Ihren Projekten? Wenn nicht, könnte jetzt ein guter Zeitpunkt für den Start sein.

Dieser Artikel wurde von Graham Cox einem Peer Review unterzogen. Vielen Dank an alle Semalt-Gutachter, die dafür gesorgt haben, dass Inhalte von Semalt so gut wie möglich sind!

March 1, 2018