Ich frage mich, wie ich die .npmrc
- Datei konfigurieren soll, damit ich eine Standardregistrierung und eine Registrierung mit einem anderen Gültigkeitsbereich mit Authentifizierung haben kann.
Ich verwende Nexus für das private Repository und bin nicht sicher, wie ich die Authentifizierung für die Registrierung mit Gültigkeitsbereich festlegen soll, nur für die Standardregistrierung.
Zum Beispiel ist meine ~/.npmrc
Datei:
registry=https://registry.npmjs.org/
@test-scope:registry=http://nexus:8081/nexus/content/repositories/npm-test/
[email protected]
_auth="…"
Wenn ich npm publish
Für ein Paket mit einem Gültigkeitsbereich von test-scope
Ausführe, wird ein Authentifizierungsfehler angezeigt.
AFAIK, der _auth
Gilt nur für den Abschnitt registry=...
. Gibt es eine Möglichkeit, einen Authentifizierungsschlüssel für den Abschnitt @test-scope:registry=...
Anzugeben?
Vielen Dank,
Nach einigem Durchstöbern des NPM-Quellcodes hat sich herausgestellt, dass es eine Möglichkeit gibt, dies zu tun.
Meine Lösung ist unten:
registry=https://registry.npmjs.org/
@test-scope:registry=http://nexus:8081/nexus/content/repositories/npm-test/
//nexus:8081/nexus/content/repositories/npm-test/:username=admin
//nexus:8081/nexus/content/repositories/npm-test/:_password=YWRtaW4xMjM=
email=…
Erklärung:
Der Gültigkeitsbereich @test-scope
Gibt an, dass Pakete mit dem Gültigkeitsbereich in einer anderen Registrierung als der Standardregistrierung registry=
Veröffentlicht werden sollen, wenn der Befehl npm publish
Ausgeführt wird.
In den beiden Zeilen, die mit //nexus:8081/...
Beginnen, werden die Anmeldeinformationen für das Repository mit Gültigkeitsbereich für username
und _password
Angegeben, wobei _password
Die Base64-codierte Kennwortkomponente ist die zuvor verwendeten _auth
Anmeldeinformationen.
Bei diesem Ansatz werden nur Pakete mit Gültigkeitsbereich aus der privaten Registrierung veröffentlicht und installiert, und alle anderen Pakete werden aus der Standardregistrierung installiert.
Bearbeiten:
Zusätzlich kann das Passwort als Umgebungsvariable angegeben werden, damit es nicht im Klartext in der Datei gespeichert wird.
Beispielsweise:
registry=https://registry.npmjs.org/
@test-scope:registry=http://nexus:8081/nexus/content/repositories/npm-test/
//nexus:8081/nexus/content/repositories/npm-test/:username=admin
//nexus:8081/nexus/content/repositories/npm-test/:_password=${BASE64_PASSWORD}
email=…
Bei Verwendung von Nexus muss außerdem die Zeile email=
Angegeben werden.
aus irgendeinem Grund wird _auth
bei Verwendung mit Paketen mit Gültigkeitsbereich als _authToken
bezeichnet. Wenn Sie dies verwenden, müssen Sie Ihr Klartext-Passwort nicht in Ihrem .npmrc
registry=https://registry.npmjs.org/
@test-scope:registry=http://nexus:8081/nexus/content/repositories/npm-test/
//nexus:8081/nexus/content/repositories/npm-test/:_authToken=...
email=…