wake-up-neo.com

Wie setze ich _auth für eine Registrierung mit Gültigkeitsbereich in .npmrc?

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,

17

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.

18

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=…
8
c0l3