tl;tr; Die Doku von GitLab ist großartig und diese kann und sollte genutzt werden; es gibt allerdings ein nicht dokumentiertes Problem, auf welches wir in diesem Blog hinweisen wollen.
pnpm, or Performant Node Package Manager, is one of the main JavaScript package managers,[2] developed in 2016 by Zoltan Kochan for the Node.js JavaScript runtime environment.[3] https://en.wikipedia.org/wiki/Pnpm
Für uns ist pnpm seit einiger Zeit die schnellere Alternative zu npm und yarn. GitLab als git-provider bietet ähnlich wie GitHub die Möglichkeit eigene npm-Pakete in einer private npm-Registry zu publishen.
Wichtig ist, dass die eigenen npm-Pakete getaggt sind. Dies erreicht man mit @<SCOPE>/<PACKAGE_NAME>. Der Scope sollte dem Gruppennamen des Accounts entsprechen.

Wenn ich diese nutzen möchte, muss ich eine .npmrc erstellen. In dieser muss das Mapping zwischen Scope und URL definiert werden. Zusätzlich muss die Authentifizierung definiert sein. Dies erreicht man durch einen Access-Token. Dieser muss die Rechte haben, auf die API zuzugreifen.
@scope:registry=https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/
//gitlab.example.com/api/v4/projects/<project_id>/packages/npm/:_authToken="${NPM_TOKEN}
Nicht dokumentierter Fehler im pnpm
Soweit kann dies alles der offiziellen Dokumentation entnommen werden. Es gibt allerdings einen Bug bzw. eine Dokumentationsschwäche in pnpm. https://github.com/pnpm/pnpm/issues/7807
Aus diesem Grund mussten wir eine weitere Authentifizierung hinzufügen: pnpm lädt die Pakete aus der projects-URL herunter. Also sieht die korrekte .npmrc folgendermaßen aus.
//<URL>/api/v4/packages/npm/:_authToken=<TOKEN>
//<URL>/api/v4/projects/:_authToken=<TOKEN>
@>SCOPE>:registry = https://<URL>/api/v4/packages/npm/