Privates NPM Paket veröffentlichen

So funktioniert es mit npm, pnpm und yarn

Private Pakete sind in vielen Projekten früher oder später notwendig.
Sobald Logik mehrfach verwendet wird oder mehrere Services auf gemeinsame Bausteine zugreifen, lohnt es sich, diese sauber als Paket zu kapseln.

Der öffentliche npm Registry ist dafür nicht immer die richtige Wahl.
Gerade bei internen Libraries oder proprietärer Logik braucht es einen privaten Weg.

Dieser Artikel zeigt, wie ein npm Paket privat veröffentlicht und genutzt wird – und was bei npm, pnpm und yarn zu beachten ist.

Wann sich ein privates Paket lohnt

Ein privates Paket ist sinnvoll, wenn:

  • Code mehrfach verwendet wird
  • mehrere Projekte dieselben Utilities nutzen
  • interne Standards zentral gepflegt werden sollen
  • Architektur bewusst modularisiert wird

Wichtig ist dabei:
Ein Paket ist kein Dump für beliebigen Code, sondern sollte eine klare Verantwortung haben.

Warum wir pnpm verwenden

Im JavaScript Ökosystem haben sich im Wesentlichen drei Package Manager etabliert:

  • npm
  • yarn
  • pnpm

Alle drei lösen das gleiche Problem und sind funktional sehr ähnlich. Der grundlegende Workflow bleibt identisch, egal welches Tool verwendet wird.

Trotzdem gibt es Unterschiede in der Art, wie Abhängigkeiten installiert und verwaltet werden.

pnpm unterscheidet sich in einem entscheidenden Punkt:

Abhängigkeiten werden nicht mehrfach im Projekt installiert, sondern zentral gespeichert und referenziert.

Das hat mehrere praktische Vorteile:

  • Installationen sind deutlich schneller
  • der Speicherverbrauch ist geringer
  • Abhängigkeiten sind klarer und deterministischer aufgelöst

Gerade in Projekten mit vielen Dependencies oder mehreren Paketen macht sich das schnell bemerkbar.

Die hier gezeigten Schritte funktionieren auch mit npm oder yarn.
In diesem Artikel werden jedoch alle Beispiele mit pnpm gezeigt.

Paket initialisieren

Zuerst wird ein neues Paket erstellt:

pnpm init

Die package.json sollte einen Scope enthalten, da GitHub Packages scoped Pakete erwartet:

{
"name": "@your-org/my-package",
"version": "1.0.0",
"main": "index.js"
}

Wichtig ist hier der Scope @your-org. Dieser entspricht später dem GitHub Account oder der Organisation.

GitHub Packages konfigurieren

Zusätzlich wird ein persönlicher Access Token benötigt.
Dieser wird direkt in GitHub erstellt:

  1. In GitHub oben rechts auf das Profil klicken
  2. Settings öffnen
  3. In der Seitenleiste auf Developer settings gehen
  4. Personal access tokens auswählen
  5. Tokens (classic)Generate new token

Dann einen Namen vergeben und die notwendigen Rechte setzen:

  • read:packages
  • write:packages

Danach den Token generieren und unbedingt direkt kopieren, da er später nicht mehr vollständig angezeigt wird.

Dieser Token wird anschließend in der .npmrc verwendet.

Dafür wird eine .npmrc im Projekt angelegt. Diese .npmrc wird auch in allen nutzenden Projekten benötigt:

@your-org:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN

Paket veröffentlichen

Jetzt kann das Paket veröffentlicht werden:

pnpm publish

Wichtig:
Das Repository sollte zu deinem GitHub Account oder deiner Organisation passen, da GitHub Packages das Paket daran bindet.

Beim ersten Publish wird das Paket automatisch privat angelegt.

Alternative Registries

GitHub Packages ist nur eine von mehreren Möglichkeiten.

Alternativ können auch genutzt werden:

  • GitLab Package Registry –> Hier einen Bug beachten
  • npm private Registry
  • eigene Registry Lösungen

Der grundlegende Workflow bleibt dabei gleich:
Registry konfigurieren, authentifizieren, veröffentlichen, installieren.

Fazit

Private Pakete sind ein einfacher, aber wirkungsvoller Schritt hin zu sauberer Softwarearchitektur.

Sie helfen dabei, Wiederverwendung zu strukturieren, Abhängigkeiten klar zu definieren und Systeme modular aufzubauen, statt Code mehrfach zu kopieren.

Mit GitHub Packages und pnpm ist der Einstieg schnell gemacht und gut in bestehende Workflows integrierbar.

In der Praxis zeigt sich allerdings schnell, dass nicht die Technik die größte Hürde ist, sondern die Struktur dahinter.

Was gehört überhaupt in ein Paket
Wie werden sinnvolle Schnittstellen definiert
Und wie wird sichergestellt, dass daraus kein neues Chaos entsteht

Genau an der Stelle wird es spannend.

Biga unterstützt dabei nicht nur konzeptionell, sondern auch ganz konkret in der Umsetzung.

Mit dem Automaizer Paket wird euer erstes Paket gemeinsam aufgebaut, veröffentlicht und direkt in eure Projekte integriert.
Inklusive Schulung, sodass das Wissen im Team bleibt und eigenständig weitergeführt werden kann.

Der Einstieg liegt bei 4.900 €.

Das Ziel ist nicht nur ein funktionierendes Paket, sondern eine Grundlage, auf der weitere sauber aufgebaute Module entstehen können.

Denn nachhaltige Software entsteht nicht durch Tools allein, sondern durch Struktur, Verständnis und saubere Entscheidungen.

BIGA SOFTWARE
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.