News

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

(Grafik: GitHub)

Lesezeit: 2 Min. Gerade keine Zeit? Jetzt speichern und später lesen

Wie für ein Major Update üblich, gibt es in der neuen Version einige Breaking Changes. Entwickler müssen sich aber trotzdem keine Sorgen um ihre Projekte und Workflows machen, vorerst bleibt die neue Version opt-in.

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.

Nix mehr verpassen: Die t3n Newsletter zu deinen Lieblingsthemen! Jetzt anmelden

Das ist neu

Workspaces und automatische Peer-Dependency-Installationen

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.

Neues Package-Lock-Format und Unterstützung für yarn.lock

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.

Internal-Refactoring

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.

Breaking Changes 😱

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.

Opt-In

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.

 

 

 

 

Meistgelesen

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

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 70 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Luca Caracciolo (Chefredakteur t3n) & das gesamte t3n-Team

Anleitung zur Deaktivierung