2014-05-07 4 views
5

Ich bin ein bisschen ein Neuling in Bezug auf die npm, so wenden Sie sich bitte helfen installieren.npm aus privaten Registrierung mit Rückfall auf eine URL git-Repository

Lassen Sie uns sagen, dass ich einige Module habe ich arbeite mit einem Git-Repository für jede von ihnen und ich habe auch sinopia installiert, um eine private Registrierung zu haben. Das Problem ist, dass wir 2 Teams sind. Ein Team in einer Stadt und das andere ist am Ende der Welt. In meinem Team habe ich die private Registry installiert, um im lokalen Netzwerk verfügbar zu sein. Das Problem hier ist, dass, wenn wir auf Git drängen, das andere Team keine eigene private Registry hat, und selbst wenn sie es täten, müssten sie jede Version jedes Moduls in ihrer privaten Registry veröffentlichen. Ein weiteres Problem ist, dass wir den Server sinopia nicht über IP öffentlich machen können (und wollen). Jetzt ist die Frage: Wie können wir die package.json/npm konfigurieren, um Abhängigkeiten von der privaten Registrierung (wenn die Registrierung reagiert) und dem Git-Repository auch zu verwalten (wenn die private Registrierung nicht antwortet - aka tut es nicht existiere nicht -).

Ich weiß, dass wir jede Abhängigkeit zu einem Git-Tag/branch/commit beziehen einrichten könnten, aber wir wollen auch die Registrierung, wenn möglich verwenden.

UPDATE

Also im Grunde würde ich eine package.json brauchen, die das würde wissen, ob dieser Teil ausfällt:

"dependencies": { 
    "app.core": "0.1.1" 
} 

, weil die private Registrierung verfügbar ist nicht installiert oder nicht, es könnte noch Laden Sie die Abhängigkeit von etwas wie diesem:

"dependencies": { 
    "app.core": "git+ssh://[email protected]:group/app-core.git#v0.1.1" 
}, 

Beachten Sie auch, dass ich etwas bevorzugen würde, die geschoben werden kann im git-Repository, so dass keines der Teams die Datei package.json lokal ändern sollte.

Hoffnung, dass jemand helfen kann.

+0

Mehrfachregistrierung ist noch nicht erfolgt. Siehe [diese] (https://github.com/npm/npm/issues/1401) für Hilfe. – user568109

+0

@ user568109 Danke, aber das ist nicht das, was ich brauchte. Ich brauchte eine private Registry und wenn diese nicht existiert, würden die Abhängigkeiten von einem "git + ssh: //[email protected]/xxx/yyy.git#000" Repository installiert werden. – helly0d

+0

@ user568109 Ich habe das Update aktualisiert Frage, um es klarer zu machen, was ich versuche zu erreichen. – helly0d

Antwort

1

Der einzige Weg, die ich für den Moment arbeiten gefunden ist eine package.json wie diese haben:

"scripts": { 
    "postinstall" : "node fallbackDependencies.js" 
} 
"dependencies": { 
    "app.core": "git+ssh://[email protected]:group/app-core.git#v0.1.1" 
}, 
"optionalDependencies": { 
    "app.core": "0.1.1" 
} 

Und in der fallbackDependencies.js Datei ein Skript auszuführen, das alle Abhängigkeiten aus der Verpackung nimmt. json, die auch in der optionalDependencies sind und für jede von ihnen prüfen, ob es einen Ordner mit diesem Namen im Ordner node_modules gibt. Wenn kein Ordner vorhanden ist, führen Sie npm install <json.dependencies[x]>.

Dies ist nur eine vorübergehende Lösung, die ich denken konnte.

Wenn jemand hat eine bessere Annäherung an diese wenden Sie sich bitte zu beantworten.

Verwandte Themen