2016-07-15 4 views
1

Wir haben ein erweitertes Modul, und für npm um es zu lösen, müssen wir sagen, wo sein Repo ist. Dies kann in dh .npmrc, wie geschehen:Define scoped npm Registry-URL als Umgebungsvariable

@my-scope:registry=http://my-sweet-replication.example.com/npm/ 

Mein Problem ist, dass wegen einiger Proxying und Authentifizierung für GET-Anfragen, ich habe auf verschiedene Werte in .npmrc für die Entwicklung gegenüber den Build-Server (travis Unternehmen) setzen . Wir nutzen bereits die Tatsache, dass npm Umgebungsvariablen für Pakete lesen kann, die nicht im Bereich liegen, aber sowohl @ als auch : ungültige Zeichen in einer Umgebungsvariablen sind. Ich kann die korrekte URL nicht exportieren.

Irgendwelche Ideen, wie man npm sagt, wo man nach scoped Modulen sucht, ohne es in .npmrc zu setzen?

Antwort

1

Vorerst meine Lösung ist, den env Befehl zu verwenden, das heißt (in .travis.yml)

install: env '[email protected]:REGISTRY=http://my-sweet-replication.example.com/npm/' npm install 

Ist das der einzige Weg, es zu tun?

Putting es in den travis env Matrix funktioniert nicht, da es EXPORT verwendet, so ist es nur REGISTRY

(Posting meine Antwort, da ich keine Hits aus googeln bekommen hat) zu exportieren versucht

0

Erstellen Sie den Benutzer manuell, indem Sie mit dem entsprechenden Token installieren.

Gehen Sie zunächst in die Envvars Ihres Projekts und legen Sie das Token unter einem bestimmten Namen fest. In diesem Beispiel verwende ich NPM_TOKEN, aber das ist nicht wichtig. Einige Unices brechen mit Envvars in Kleinbuchstaben. Verwenden Sie daher Allcaps.

Weiter Sie folgendes zu Ihrem .travis.yml hinzufügen:

before_install: 
    - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc 

Jetzt sollten Sie einen NPM Benutzer mit den entsprechenden Anmeldeinformationen verfügen.