Node.js-Module: Der Node Package Manager

npm und seine Abhängigkeiten
Keine Kommentare

Für die Verwaltung von Abhängigkeiten in Node.js-Projekten ist der Node Package Manager – kurz npm – mittlerweile nicht mehr wegzudenken. Doch dieses Werkzeug hat auch so seine Tücken, und das gerade in umfangreichen Projekten.

In den folgenden Abschnitten erfahren Sie, wie Sie mit den Abhängigkeiten und ihren Versionen umgehen und wie Sie veraltete und nicht mehr verwendete Pakete finden.

Die Abhängigkeiten Ihrer Applikation werden in der zentralen Konfigurationsdatei Ihres Projekts, der package.json-Datei, festgehalten. Die Mindestanforderung pro Paket ist der Paketname und eine Versionsnummer. Im Normalfall tragen Sie diese Informationen jedoch nicht von Hand in die Datei ein, sondern lassen dies npm für Sie übernehmen. Mit der Option –S wird die Abhängigkeit als normale Dependency eingetragen, mit der Option –D als devDependency.

Bei der Installation können Sie mit einem @-Zeichen getrennt vom Paketnamen auch eine konkrete Versionsnummer angeben. npm selbst nutzt das semver-Paket, um Versionsnummern zu behandeln. Falls Sie genauer wissen möchten, welche Möglichkeiten Ihnen bei der Angabe von Versionsnummern zur Verfügung stehen, werfen Sie doch einmal einen Blick in die Dokumentation des semver-Pakets.

Standardmäßig werden Versionen als sogenannte Caret Ranges angegeben. Installieren Sie beispielsweise Express in Ihrem Projekt, finden Sie in der package.json einen Eintrag wie „express„: “^4.14.0”. Diese Schreibweise gibt an, dass die Versionsnummer, die direkt neben der am weitesten links stehenden 0 nicht aktualisiert werden darf. So dürfte in diesem Fall das express-Paket nicht auf die Version 5 aktualisiert werden. Haben Sie ein Paket mit der Version ^0.4.2 installiert, kann zwar die Version 0.4.3, nicht aber 0.5 installiert werden.

Abhängigkeiten

Seit der Version 4 von npm werden die installierten Abhängigkeiten nicht mehr in einer schier endlosen Hierarchie von Verzeichnissen abgelegt. Diese Strategie hat häufig unter Windows-Systemen zu Problemen mit überlangen Pfaden geführt. Mittlerweile werden die Pakete in einer flachen Hierarchie direkt im node_modules-Verzeichnis gespeichert. Das führt allerdings dazu, dass man sich nicht mehr mit einem Blick in das Verzeichnis einen Überblick verschaffen kann.

Stattdessen müssen Sie auf der Kommandozeile den Befehl npm ls ausführen, der Ihnen eine Auflistung aller installierten Pakete zurückgibt. Je nachdem, wie viele Abhängigkeiten Sie installiert haben und über wie viele Abhängigkeiten diese Pakete verfügen, kann die Ausgabe sehr unübersichtlich werden. Hier hilft der Parameter depth weiter. Weisen Sie ihm den Wert 0 zu, sehen Sie nur die direkt installierten Abhängigkeiten. Je höher Sie den Wert wählen, desto tiefer steigen Sie in die Hierarchie ein.

International PHP Conference 2018

Getting Started with PHPUnit

by Sebastian Bergmann (thePHP.cc)

Squash bugs with static analysis

by Dave Liddament (Lamp Bristol)

API Conference 2018

API Management – was braucht man um erfolgreich zu sein?

mit Andre Karalus und Carsten Sensler (ArtOfArc)

Web APIs mit Node.js entwickeln

mit Sebastian Springer (MaibornWolff GmbH)

Wie finde ich heraus, ob die installierten Pakete noch aktuell sind?

Ein häufig unterschätztes Problem ist die Aktualisierung von Paketen. Gerade wenn Sie Ihre Applikation über einen längeren Zeitraum entwickeln, müssen Sie regelmäßig prüfen, ob es Updates für die von Ihnen verwendeten Pakete gibt. Mit den Updates kommen nämlich nicht nur neue Features, sondern auch sicherheitskritische Bug Fixes und Performanceverbesserungen.

Jetzt müssen Sie aber nicht für jedes Paket erst eine Recherche auf GitHub oder www.npmjs.com starten, sondern können das ganz bequem npm für Sie erledigen lassen, indem Sie den Befehl npm outdated auf der Kommandozeile ausführen. Als Ausgabe erhalten Sie eine tabellarische Aufstellung aller veralteten Pakete mit ihrer installierten Version, der Version, die in der package.json-Datei angegeben ist, und der aktuell verfügbaren Version.

Werden überhaupt noch alle installierten Pakete verwendet?

Während der Entwicklung einer Applikation installieren Sie recht häufig Pakete, binden diese ein und verwenden sie. Manchmal stellen Sie dann fest, dass das Paket die Aufgabe nicht optimal löst und installieren ein weiteres Paket. Was passiert nun mit dem zuvor installierten Paket? Zu Beginn der Entwicklung, wenn Sie noch den Überblick über Ihre Applikation haben und die Zeit auch noch nicht so drückt, räumen Sie wahrscheinlich noch auf und deinstallieren das Paket ordnungsgemäß.

Sind Sie jedoch unter Zeitdruck, passiert es schnell mal, dass das Aufräumen ausbleibt und sich so über die Zeit Paketleichen im Projekt ansammeln. Dagegen gibt es das dependency-check-Paket. Dieses installieren Sie global auf Ihrem System und führen es dann für Ihre Applikation mit dem Kommando dependency-check ./package.jsonunused aus.

Das Werkzeug geht dann vom Startpunkt der Applikation aus und prüft, ob alle Abhängigkeiten auch wirklich verwendet werden. Die Ausgabe sagt Ihnen zunächst, ob es Pakete gibt, die nicht verwendet werden und listet sie dann durch Kommas getrennt auf.

Beim Umgang mit den Abhängigkeiten in Ihrem Projekt können Sie sowohl auf zahlreiche Features und Erweiterungen des npm-Kommandozeilenprogramms zugreifen als auch zusätzliche Pakete installieren, die Ihnen die Arbeit erleichtern. Es lohnt sich immer, wenn Sie auf ein konkretes Problem stoßen, zunächst das npm Repository zu durchforsten. Meist gibt es ein oder gleich mehrere Pakete, die Sie nur noch installieren und verwenden müssen.

PHP Magazin

Entwickler MagazinDieser Artikel ist im PHP Magazin erschienen. Das PHP Magazin deckt ein breites Spektrum an Themen ab, die für die erfolgreiche Webentwicklung unerlässlich sind.

Natürlich können Sie das PHP Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -