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.
- Gehen Sie in GitLab zu Settings > Access Tokens.
- Beantragen Sie einen Token und aktivieren Sie die Berechtigungen
read_api(zum Herunterladen) undwrite_package_registry(zum Veröffentlichen). - 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.
Navigationseinstellungen: Die Essenz der .npmrc
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:
- Beantragen Sie einen Token und schützen Sie ihn mit Umgebungsvariablen.
- Konfigurieren Sie die korrekte
.npmrc-Navigationskarte. - Verwenden Sie das Feld
filesin derpackage.jsonfü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!