Mit Workspaces und automatisierten Peer-Dependency-Installationen: npm 7.0.0 ist da

(Grafik: GitHub)
npm, den Paketmanager für die JavaScript-Runtime Node.js gibt es mittlerweile seit elf Jahren. Mit Version 7.0.0 hat das zugehörige CLI jetzt ein Update erhalten. Die neue Version wurde erstmals im Mai diesen Jahres vorgestellt und soll nächste Woche mit Node.js 15.0.0 ausgeliefert werden. Wer solange nicht warten will, kann die neue Version bereits jetzt über npm i -g npm@7
installieren.
V 7.0.0 des npm-CLI wartet mit einer Neuerung namens Workspaces auf. Dahinter verbergen sich eine Reihe von Features, die die Verwaltung mehrerer Packages ausgehend von einem einzelnen übergeordneten Root-Package ermöglichen sollen.
Außerdem spannend: Der Peer-Dependency-Algorithmus der neuen Version findet jetzt automatisch passende Peer-Dependencies für eure Packages, bisher mussten Entwickler diese manuell installieren.
Das Package-Lock-Format wurde überarbeitet, so dass es jetzt offenbar alles enthält, was npm für die vollständige Erstellung des Package Trees benötigt. Bisher wurden yarn.lock-Dateien offenbar ignoriert, ab V7 kann der npm-Client auch daraus Paketmetadaten und Auflösungshinweise auslesen.
Für mehr Stabilität wurde das Innenleben des npm-Clients einem umfassenden Refactoring unterzogen. Besonderes Augenmerk lag dabei auf der Trennung von voneinander unabhängigen Funktionalitäten. Zum Beispiel wurden Inspektion und Verwaltung des Node-Modules-Tree jetzt in das Arborist-Modul verschoben. Wer sich für Details diesbezüglich interessiert: Auf dem npmjs-Blog gibt es einen Deep-Dive dazu. Derartige Veränderungen sollen auf längere Sicht für mehr Stabilität und bessere Wartbarkeit der npm-CLI-Codebase sorgen. Das für die Überarbeitung verantwortliche Produkt-Team hat V 7.0.0 laut Blogpost zum Release über die Node.js Smoke-Testing-Suite CITGM gegen 120 der am weitesten verbreiten Node-Module ausgeführt. Das erfreuliche Ergebnis: trotz massiver Änderungen am Code des CLI liefen alle davon auch in Verbindung mit V 7.0.0 wie gehabt.
Ganz ohne Breaking Changes kommt die neue Version allerdings nicht aus. Darunter ist die bereits erwähnte automatische Installation sogenannter Peer Dependencies. V7 beinhaltet die Nutzung des package.exports
-Fields, require()
auf internale npm-Module anzuwenden ist deshalb in der neuen Version nicht mehr möglich. Auch wurde npx
komplett überarbeitet – der zugehörige Befehl lautet ab jetzt npm exec
, hinzu kommen verschiedene Veränderungen des Package Runners – die wohl Auffälligste ist eine Eingabeaufforderung, wenn das auszuführende Modul noch nicht installiert ist. Außerdem wurde der Output von npm audit
komplett überarbeitet. Die Einzelheiten zu allen Neuerungen und Breaking Changes sind im Detail auf dem npmjs.com-Blog nachzulesen.
Weil die siebte Version so viele einschneidende Veränderungen mitbringt, hat das verantwortliche Produktteam entschieden, beim Upgrade auf die neue Version vorerst einen Opt-In-Ansatz zu wählen. Für Entwickler heißt das, dass eure Projekte nicht per Default die neue Version erhalten – es sei denn, ihr installiert V 7 über npm install -g npm@7
, oder aber, ihr installiert Node.js 15.
Zum Default werden soll V 7 dann in naher Zukunft. Bevor die neue Version Eingang in einen LTS-Release von Node.js finden wird, will das Produktteam um das Tool jedoch vorerst Feedback und Bug-Reports aus der Community abwarten. Wer Ideen und Vorschläge einbringen will, findet das zugehörige RFC-Repository auf GitHub.
Bitte beachte unsere Community-Richtlinien
Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.
Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.
Dein t3n-Team