Alles neu macht der Mai: Neuerungen in npm 5

the next big thing  –  0 Kommentare
Anzeige

Vor einigen Tagen ist Node.js 8.0 erschienen, das die Basis für die künftige LTS-Version der JavaScript-Laufzeitumgebung darstellt. Zusätzlich enthält Node.js auch die neue Version 5 der Paketverwaltung npm. Was hat sich hier getan?

Die Paketverwaltung npm ist aus der täglichen Arbeit mit Node.js nicht mehr wegzudenken. Trotzdem hat die Software einige Makel. Dazu zählen vor allem die teilweise sehr niedrige Geschwindigkeit und der unglückliche Umgang mit Versionsnummern. Beides wurde mit npm 5 deutlich verbessert.

Anzeige

Für die neue Version von npm wurde das gesamte Cache-Handling überarbeitet. Das stand zwar schon lange Zeit auf der Agenda, wurde aber stets zugunsten anderer Funktionen verschoben. Nun wurde das Thema endlich angegangen, und der Effekt ist deutlich spürbar: Installiert man einige npm-Module, fällt npm 5 durch eine weitaus höhere Geschwindigkeit als die Vorgängerversionen auf.

Als ob das nicht genug wäre, funktioniert das Ganze nun auch offline – und zwar ohne ständig zu versuchen, die Registry eventuell doch noch zu erreichen. Der Offline-Modus lässt sich durch die Angabe des Parameters --offline sogar erzwingen. Praktischer ist im Alltag vermutlich der Parameter --prefer-offline, der npm anweist, nur dann auf das Netzwerk zuzugreifen, wenn ein Modul nicht im lokalen Cache gefunden wird.

Da der Cache nun auch mit Prüfsummen für die heruntergeladenen und installierten Module arbeitet, lassen sich zudem Fehler besser aufspüren: npm ist nun in der Lage, defekte Downloads zu erkennen und automatisch zu beheben.

Das Kommando npm cache clear gibt es zwar weiterhin, dessen Aufruf bewirkt aber nichts mehr (außer Plattenplatz zu sparen). Korrupte Caches von Hand aufzuräumen gehört mit npm 5 endlich der Vergangenheit an. Der Parameter --cache-min, mit dem sich bislang die Cache-Dauer kontrollieren ließ, wurde ersatzlos gestrichen.

Die Prüfsummen des Caches dienen jedoch noch einem anderen Zweck. Werden Module installiert, schreibt npm nun standardmäßig eine Lock-Datei, ähnlich wie Yarn. Dadurch werden Installationen exakt reproduzierbar, auch wenn in einer der verwendeten package.json-Dateien keine strikte Version angegeben wurde.

Das Feature kannte npm unter dem Namen shrinkwrap bislang zwar auch schon, allerdings arbeitete es nicht zuverlässig. Außerdem wurde es nur auf den expliziten Wunsch des Benutzers hin aktiv und daher praktisch kaum verwendet.

Die neue Lock-Datei trägt den Namen package-lock.json und ähnelt in ihrer Struktur der von Yarn. Aus naheliegenden Gründen ist es sinnvoll, diese Datei gemeinsam mit dem Quellcode des Moduls in die Versionsverwaltung einzuchecken.

Neu ist ebenfalls, dass der Parameter --save nicht mehr erforderlich ist, da das Eintragen von neu installierten Modulen in der package.json mit npm 5 zum Normalfall wird. Weiterhin benötigt werden allerdings --save-dev und --save-exact, an deren Verhalten sich nichts geändert hat. Will man das Speichern explizit verhindern, bietet sich der Parameter --no-save an.

npm 5 ist ein großer Schritt nach vorne und zeigt, dass Konkurrenz à la Yarn durchaus das Geschäft belebt. Eine vollständige Liste aller Neuerungen findet sich in den Release-Notes. Die Arbeit mit der neuen Version macht Spaß, weshalb das Update allen Node.js-Entwicklern wärmstens zu empfehlen ist.

tl;dr: npm 5 bietet zahlreiche Neuerungen, allen voran eine deutlich höhere Geschwindigkeit, einen Offline-Modus und einen konsequenten Umgang mit Versionsnummern ähnlich zu Yarn, wobei ebenfalls eine Lock-Datei eingesetzt wird.

Anzeige