npm

npm

npm ist der zentrale Umschlagplatz für fertige Programmbausteine der Programmiersprache JavaScript. Über ein kleines Kommandozeilenwerkzeug lädt man solche Bausteine in ein eigenes Projekt, statt alles selbst zu schreiben.

Wer eine Webseite oder ein Programm schreibt, braucht ständig Dinge, die andere schon gebaut haben: eine Kalenderanzeige, eine Rechtschreibprüfung, eine Funktion zum Umrechnen von Datumsangaben. npm ist eine riesige öffentliche Sammlung solcher fertigen Bausteine. Jeder Baustein heißt dort Paket und besteht aus Programmcode, den man kostenlos in sein eigenes Projekt einbauen darf. Zu npm gehören zwei Dinge: die Sammlung selbst, die im Internet liegt, und ein kleines Werkzeug auf dem eigenen Rechner, das Pakete herunterlädt und einsortiert. Der Name stand ursprünglich für « Node Package Manager », weil das Ganze für die Programmierumgebung Node.js gebaut wurde. Heute ist es der Standardweg, wie fast alle Web-Entwickler an fremden Code kommen.

Warum kaum ein Webprojekt ohne npm auskommt

npm ist die größte Codesammlung der Welt. Es liegen dort weit über zwei Millionen Pakete, und sie werden milliardenfach pro Woche heruntergeladen. Praktisch jede größere Webseite, die du besuchst, enthält Code, der irgendwann von dort kam. Das spart enorm viel Arbeit: statt drei Tage an einer Datumsfunktion zu sitzen, tippt man einen Befehl.

Diese Bequemlichkeit hat eine Kehrseite, die regelmäßig in den Nachrichten landet. Ein Paket benutzt oft selbst wieder andere Pakete, und die wiederum weitere. So hängen an einem einzigen Einbau schnell hunderte fremde Bausteine. Fachleute nennen das eine Abhängigkeitskette. Wenn ein einziges Glied dieser Kette manipuliert wird, verteilt sich Schadcode automatisch an alle, die es benutzen.

Genau das ist mehrfach passiert. Angreifer haben Zugangsdaten von Paket-Autoren gestohlen und heimlich schädliche Versionen veröffentlicht. Ein anderes Mal löschte ein Entwickler aus Protest ein winziges Paket mit elf Zeilen Code — und tausende Projekte weltweit ließen sich nicht mehr bauen. Solche Vorfälle heißen Angriffe auf die Lieferkette, weil sie nicht das Ziel selbst treffen, sondern seinen Zulieferer.

Von einem Befehl zum Ordner voller fremdem Code

Der Ablauf ist einfach. Man tippt in ein Textfenster einen Befehl wie « npm install react ». Das Werkzeug fragt beim npm-Server nach dem Paket, lädt es herunter und legt es in einem Ordner namens node_modules ab. Alle Pakete, die dieses Paket selbst braucht, kommen automatisch mit.

Damit das nachvollziehbar bleibt, führt jedes Projekt eine Art Einkaufsliste. Sie steht in der Datei package.json und nennt alle direkt gewünschten Pakete samt Versionsnummern. Eine zweite Datei, die Lockfile, hält zusätzlich fest, welche genaue Version tatsächlich installiert wurde. So bekommt ein Kollege, der das Projekt lädt, exakt die gleichen Bausteine und nicht versehentlich neuere.

Versionsnummern folgen dabei einer festen Logik, meist drei Zahlen wie 4.17.2. Die erste ändert sich nur, wenn etwas nicht mehr rückwärtskompatibel ist. Die letzte zeigt kleine Fehlerkorrekturen an. Wer nur die letzte Zahl aktualisiert, riskiert also wenig — ein Sprung bei der ersten kann ein Projekt lahmlegen.

npm im Alltag von Entwicklern und in den Tech-News

Wenn du irgendwo eine Anleitung für ein Programmierprojekt liest, steht dort fast sicher eine Zeile mit « npm install ». Auch das Starten eines Projekts läuft oft über npm, etwa mit « npm run dev ». Für Einsteiger ist das häufig der erste Kontakt mit einer Kommandozeile überhaupt.

In Wirtschaftsnachrichten taucht npm meist in zwei Zusammenhängen auf. Erstens bei Sicherheitsvorfällen, wenn ein beliebtes Paket gekapert wurde und Firmen prüfen müssen, ob ihre Software betroffen ist. Zweitens bei Regulierung: neue Vorschriften verlangen von Unternehmen zunehmend eine Stückliste ihrer Software, damit sie im Ernstfall wissen, welche fremden Bausteine sie eingebaut haben.

Wichtig ist die Abgrenzung: npm gehört zur Welt von JavaScript. Andere Programmiersprachen haben eigene Sammlungen, etwa PyPI für Python. Ein häufiger Irrtum ist außerdem, npm sei eine Firma, die den Code prüft. Das ist nicht so — jeder darf dort veröffentlichen, und die Verantwortung für die Qualität liegt bei dem, der ein Paket einbaut.

Subscribe free. Unsubscribe the second it sucks.

High-signal news across AI, business, UX, and tech. Every morning.