Sonatype Nexus 3 als NPM-Repository einsetzen
In diesen Blog-Post möchte ich euch zeigen, wie ihr euer Sonatype Nexus 3 als NPM-Repository einrichtet könnt. Ähnliche Funktionalität bietet ein Nexus auch für Apache-Maven-Pakete an. Folgende Dinge werden wir erledigen:
- Wir legen ein privates (hosted) Repository für unsere eigenen NPM-Pakete an. Über dieses Repository können interne Unternehmens-NPM-Pakete verwaltet und zur Verfügung gestellt werden.
- Ein Proxy Repository dient als interner Cache für das öffentliche und offizielle NPM-Repository.
- Ein drittes Repository (group) dient als Zusammenfassung der beiden ersten Repositories. Über dieses Repository können später über eine URL sowohl öffentliche als auch private NPM-Pakete geladen werden.
- Ihr könnt eurer Entwicklungssystem so einrichten, dass selbst entwickelte Pakete in das Nexus hochgeladen werden können. Außerdem sollen alle öffentlichen Pakete über das Proxy Repository geladen werden.
Private Repository
Folgende Einstellungen sind notwendig. Den Namen und die URL des Repositories könnt ihr natürlich für euer Unternehmen anpassen.
Proxy Repository
Group Repository
Nexus als npm-Dependency-Cache einrichten
registry=http://HOST:8091/nexus/repository/npm-group/
Eigene Pakete hochladen
Um ein Paket in das Nexus-System hochzuladen (npm publish), müssen noch weitere Einträge in die .npmrc-Datei hinzugefügt werden. Diese Angaben können wieder in eurem Home-Verzeichnis oder Projektverzeichnis abgelegt werden. Außerdem braucht es Angaben zu deinem Namen und deiner E-Mail Adresse.
Weiter müsst ihr euch dem Nexus gegenüber authentifizieren. Dazu müsst ihr euren Benutzernamen und Passwort base64 kodiert in der .npmrc-Datei ablegen. Folgenden Befehl könnt ihr z.B. über die git-bash ausführen. Mit diesem Befehl könnt ihr euren Benutzernamen/euer Passwort kodieren.
echo -n 'MaikKrawinkel:MaiksPasswort' | openssl base64 # Bitte ein Leerzeichen vor dem echo mit angeben. Dadurch landet der Befehl (inklusive eures Passworts) nicht in der History der Bash!
Vorbereitung des Projektes
"publishConfig": { "registry": "http://HOST:8091/nexus/repository/npm-ordix-private/" }
Paket veröffentlichen
Der letzte Schritt ist das Bauen und Veröffentlichen des Projekts. Hierbei gehe ich davon aus, dass das kompilierte Artefakt im dist/ -Verzeichnis liegt.
npm build npm publish dist
Das Ende vom Lied
- Öffentliche Pakete werden über das Nexus Proxy Repository geladen.
- Private Pakete können im Nexus Private Repository abgelegt und für alle zur Verfügung gestellt werden.
- Über ein Nexus Group Repository erhält man einen Repository, um öffentliche und private NPM-Pakete zu laden.
Senior Chief Consultant bei ORDIX
Bei Updates im Blog, informieren wir per E-Mail.
Kommentare