2014-05-07 4 views
5

Je suis un peu un débutant concernant le npm, alors s'il vous plaît aider. Disons que j'ai quelques modules sur lesquels je travaille en utilisant un dépôt git pour chacun d'entre eux et j'ai aussi installé sinopia pour avoir un registre privé. Le problème est que nous sommes 2 équipes. Une équipe dans une ville et l'autre est au bout du monde. Dans mon équipe j'ai installé le registre privé pour être disponible dans le réseau local. Le problème ici est que lorsque nous insistons sur git, l'autre équipe n'a pas son propre registre privé, et même si c'était le cas, elle aurait besoin de publier chaque version de chaque module dans son registre privé. Un autre problème est que nous ne pouvons pas (et ne voulons pas) rendre le serveur sinopia public via IP.npm installer à partir du registre privé avec repli vers un URL de dépôt git

Maintenant, la question est la suivante: Comment peut-on configurer le package.json/npm pour gérer les dépendances à la fois le registre privé (si le registre répond) et le dépôt git également (si le registre privé ne répond pas - alias il doesn n'existe pas -).

Je sais que nous pourrions configurer chaque dépendance pour faire référence à une balise git/branche/commit mais nous voulons aussi utiliser le registre si possible.

MISE À JOUR

Donc, fondamentalement, je aurais besoin d'un package.json qui sait que si cette partie échoue:

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

parce que le registre privé n'est pas installé ou non disponible, il pourrait encore charger la dépendance de quelque chose comme ceci:

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

Notez également que je préférerais quelque chose qui peut être poussé dans le dépôt git afin qu'aucune des équipes ne change localement le package.json.

Espérons que quelqu'un puisse vous aider.

+0

Le registre multiple n'a pas encore été fait. Voir [this] (https://github.com/npm/npm/issues/1401) pour obtenir de l'aide. – user568109

+0

@ user568109 Merci mais ce n'est pas ce dont j'avais besoin. J'avais besoin d'un registre privé et si celui-ci n'existe pas, les dépendances seraient installées à partir d'un dépôt "git + ssh: //[email protected]/xxx/yyy.git#000" – helly0d

+0

@ user568109 J'ai mis à jour le question pour le rendre plus clair ce que j'essaie d'accomplir. – helly0d

Répondre

1

La seule façon que je l'ai trouvé à travailler pour le moment est d'avoir un package.json comme celui-ci:

"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" 
} 

Et dans le fichier fallbackDependencies.js pour exécuter un script qui prend toutes les dépendances du paquet. json qui sont également dans le optionalDependencies et pour chacun d'eux, vérifiez s'il existe un dossier portant ce nom dans le dossier node_modules. S'il n'y a pas de dossier, exécutez npm install <json.dependencies[x]>.

C'est la seule solution temporaire que je pouvais penser.

Si quelqu'un a une meilleure approche à ce sujet, n'hésitez pas à répondre.

Questions connexes