Paketmanager: npm 7 bringt Neues für die Kommandozeile
Neben neuen Features für das CLI des Paketmanagers ermöglicht das Update, Peer Dependencies mit einem neuen Algorithmus automatisch zu verwalten.
Das npm-Team hat npm 7.0.0 veröffentlicht. Der Paketmanager verwaltet zahlreiche JavaScript-Pakete und war ursprünglich auf das Zusammenspiel mit Node.js ausgelegt. Die siebte Hauptversion soll mit Node.js 15 ausgerollt werden. Außerdem steht sie bereits jetzt über das Terminal zum Testen bereit: npm i -g npm@7
.
Technisch gesehen kombiniert npm ein Kommandozeilenwerkzeug mit einer online verfügbaren Datenbank, die sich auch über die Weboberfläche einsehen lässt. Der Großteil der Pakete stammt aus dem Open-Source-Bereich, für die das Unternehmen npm Inc. kostenfreie Lizenzen ausstellt. Zusätzlich bietet es mit npm Enterprise eine kommerzielle Variante für nicht öffentlich zugängliche Pakete und zusätzliche Securitychecks an.
Neue Features für npm CLI
npm 7 bringt einige neue Features für das npm Command Line Interface (CLI), die die Verwaltung mehrere Pakete eines einzelnen Root-Pakets auf Top-Level-Ebene aus unterstützen. Darüber hinaus bringt das Update die Möglichkeit, Peer Dependencies mit einem neuen Algorithmus automatisch zu verwalten. Vor npm 7 mussten Entwickler offenbar ihre eigenen Peer-Abhängigkeiten verwalten und installieren. Die Neuerung sorgt dafür, dass eine gültig übereinstimmende Peer-Abhängigkeit an oder über der Position dieser Peer-Abhängigkeit im node_modules-Baum gefunden wird.
Zu den neuen Funktionen gehört zudem ein Package-Lock-Format, das die Möglichkeit freischaltet, deterministisch reproduzierbare Builds zu erstellen. Außerdem soll das Format alles mitbringen, was npm benötigt, um den Paketbaum vollständig zu erstellen. Vor Version 7 hatte der Paketmanager die yarn.lock-Datein offenbar ignoriert. Mit dem Update verwendet der npm-Client nun yarn.lock als Quelle für Paketmetadaten sowie Hinweise zum Auflösen.
Aus Alt mach Neu
Das npm-Team gibt an, die Interna des Paketmanagers erheblich refaktorisiert zu haben. So wurde beispielsweise die Inspektion und Verwaltung des node_modules-Baums in das Modul Arborist verschoben. Änderungen wie diese sollen die npm-Codebasis zuverlässiger und einfacher wartbar machen. Weitere Informationen zum aktuellen Release finden sich im Beitrag auf dem npmjs-Blog.
(mdo)