Featured image of post Wie veröffentlicht man unternehmenseigene private NPM-Pakete auf GitLab? Ein kompletter pnpm-Einrichtungsleitfaden

Wie veröffentlicht man unternehmenseigene private NPM-Pakete auf GitLab? Ein kompletter pnpm-Einrichtungsleitfaden

Erfahren Sie, wie Sie pnpm konfigurieren, um private NPM-Pakete in der GitLab-Registry zu veröffentlichen. Behandelt werden die .npmrc-Konfiguration, die Sicherheit von Access Tokens und die Allowlist-Einstellungen in der package.json für eine professionelle Entwicklererfahrung.

Stellen Sie sich vor, Sie sind ein Chefkoch. Um sicherzustellen, dass alle Restaurants Ihrer Kette die gleichen köstlichen Gerichte zubereiten, haben Sie eine Reihe von „geheimen Saucen“ entwickelt. Sie möchten, dass diese Saucen an jede Filiale geliefert werden, aber Sie können nicht zulassen, dass zufällige Passanten sie einfach mitnehmen.

In der Welt der Softwareentwicklung sind diese geheimen Saucen die unternehmensinternen „privaten Pakete“.

Wenn Projekte wachsen, haben Sie wahrscheinlich schon einmal diese Frustration erlebt: dieselbe UI-Komponente oder Hilfsfunktion in jedem Projekt zu duplizieren oder sich mit Git-Submodulen abzumühen, bis Sie Ihre Lebensentscheidungen in Frage stellen. Tatsächlich brauchen Sie nur eine „Private Speisekammer (Private NPM Registry)“. Heute besprechen wir, wie man pnpm verwendet, um Pakete auf GitLab zu veröffentlichen, damit Teammitglieder sie wie Open-Source-Pakete mit einem einzigen Befehl installieren können.

Warum brauchen Sie private Pakete und Scopes?

Im Node.js-Universum müssen private Pakete einen „Nachnamen“ haben – das ist der Scope.

Wenn Ihr Unternehmen beispielsweise den Namen @my-company trägt, könnte Ihr Paketname so aussehen: @my-company/ui-kit. Wenn pnpm diesen Nachnamen sieht, wird es nicht ziellos auf npmjs.org suchen. Stattdessen steuert es direkt Ihre angegebenen Koordinaten im Unternehmen an.

Schlüsselentscheidung: Group Level vs. Project Level

In GitLab ist das so, als würden Sie entscheiden, wo Sie Ihre Gewürze lagern:

Ebene Beschreibung
Project Level (Projektebene) Wie der persönliche Tresor eines Kochs, der nur für bestimmte Gerichte verwendet werden kann. Die Einrichtung ist mühsamer, da jedes Paket eine unabhängige Konfiguration erfordert.
Group Level (Gruppenebene) Dies ist das Konzept der „Zentralküche“ – absolut empfehlenswert! Einmal eingerichtet, können Dutzende oder sogar Hunderte von Paketen unter derselben Gruppe dieselben Einstellungen und Anmeldeinformationen gemeinsam nutzen.

Einrichten des „Reisepasses“: Access Tokens und Umgebungsvariablen

Um das unterirdische Kornhaus zu betreten, müssen Sie zunächst eine „Zugangskarte“ erwerben.

  1. Gehen Sie in GitLab zu Settings > Access Tokens.
  2. Beantragen Sie einen Token und aktivieren Sie die Berechtigungen read_api (zum Herunterladen) und write_package_registry (zum Veröffentlichen).
  3. Wichtig: Sobald Sie den Token haben, schreiben Sie ihn niemals direkt fest in Ihren Code oder Ihre .npmrc-Datei! Das ist so, als würde man den Tresorschlüssel in der Tür stecken lassen.

Der professionellste Ansatz besteht darin, ihn in „Umgebungsvariablen“ zu verstecken. Fügen Sie diese Zeile zu Ihrem Mac- oder Linux-Terminal (z. B. ~/.zshrc) hinzu:

export GITLAB_TOKEN="Ihr_GitLab_Token"

Auf diese Weise hängt das System die Anmeldeinformationen automatisch für Sie an, was es sowohl sicher als auch bequem macht.

Als Nächstes erstellen wir eine Navigationskarte, .npmrc, im Projektstamm, um pnpm mitzuteilen, wohin es gehen soll:

# Für alles, was mit @my-company beginnt, gehe zu GitLab
@my-company:registry=https://gitlab.com/api/v4/groups/<YOUR_GROUP_ID>/-/packages/npm/

# Zugangskarten-Authentifizierung einrichten (Einlesen der soeben festgelegten Umgebungsvariablen)
//gitlab.com/api/v4/groups/<YOUR_GROUP_ID>/-/packages/npm/:_authToken="${GITLAB_TOKEN}"

Tauschen Sie einfach die Group ID Ihres Unternehmens aus, und der Weg ist geebnet!

Die letzte Meile vor der Veröffentlichung: Die Kunst der Verpackung

Viele Leute beeilen sich mit der Veröffentlichung, nachdem sie die Verbindung eingerichtet haben, nur um versehentlich Testdateien oder sogar Geheimkonfigurationen hochzuladen. Hier kommt das Feld files in der package.json gerade recht.

Dies ist ein „Allowlist“-Konzept:

{
  "name": "@my-company/lib-1",
  "files": [
    "dist"
  ],
  "publishConfig": {
    "registry": "https://gitlab.com/api/v4/projects/<YOUR_PROJECT_ID>/packages/npm/"
  }
}
Einstellung Beschreibung
files Sagen Sie dem System explizit, dass ich nur die kompilierte Essenz innerhalb von dist veröffentlichen möchte und den restlichen Ballast zurücklasse.
publishConfig Dies ist eine doppelte Versicherung, die sicherstellt, dass dieses Paket niemals versehentlich auf hoher See (npmjs.org) veröffentlicht wird.

Vor der Veröffentlichung wird empfohlen, den Befehl pnpm pack zu verwenden, um den Inhalt lokal auszupacken und zu überprüfen. Sobald alles gut aussieht, führen Sie vertrauensvoll pnpm publish aus!

Fazit

Der Aufbau einer privaten Speisekammer ist nicht schwierig. Die Schlüssel sind:

  1. Beantragen Sie einen Token und schützen Sie ihn mit Umgebungsvariablen.
  2. Konfigurieren Sie die korrekte .npmrc-Navigationskarte.
  3. Verwenden Sie das Feld files in der package.json für einen präzisen Versand.

Wenn Sie diesen Workflow beherrschen, können Sie die Code-Wiederverwendung in Ihrem Unternehmen professionell, sicher und elegant gestalten. Gehen Sie jetzt los und bauen Sie Ihre eigene Zentralküche!

Reference

All rights reserved,未經允許不得隨意轉載
Erstellt mit Hugo
Theme Stack gestaltet von Jimmy