Kann ich ein privates npm-repository ohne die Replikation der öffentlichen repository?
Schreibe ich eine Anzahl Stücke von code (für internen Gebrauch) mit node.js und wollen, lagern Sie die Module (verpackt für npm) in einem Paket-repository für jede Verteilung auf die verschiedenen Maschinen installiert werden.
Im Idealfall würde ich gerne eine Lösung, ähnlich wie Debian ' s apt-repositories, in denen ich laufen kann ein eigenes repository server und konfigurieren von npm mit einer Liste von repositories zu installieren (Bei der Installation von "foo", wenn "foo" bekannt ist, durch meinen privaten server dort installieren, ansonsten installieren Sie es aus dem öffentlichen server).
Aber es sieht aus wie die npm registry
Konfigurations-key akzeptiert nur eine einzelne URL.
Gibt es eine Möglichkeit, das zu erreichen, was ich will?
Den nächsten habe ich in der Lage zu finden gewesen:
- Spiegelung der öffentlichen repository lokal und hinzufügen meine Pakete drauf... aber ich will nicht zu halten, die Menge der Daten (2,5 G und noch herunterladen) repliziert auf AWS.
- Hosting all meinen Paketen in git-repositories und die Installation von dort (das ist mehr Aufwand).
- Hosting statische Pakete auf HTTP (soweit ich das sagen kann, dies würde verhindern, dass mir von automatisch immer "die neueste version". Ich nehme an, ich könnte tun etwas mit symlinks, aber das ist immer noch weniger flexibel als git, erfordert vollständige URLs (die müssen aktuell gehalten werden), und nicht mit einer durchsuchbaren repository.
InformationsquelleAutor der Frage Quentin | 2013-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nur für meine Arbeit. Hier ist, was ich getan habe:
Setup leer NPM registry: ich folgte den Anweisungen von dieser Gabel npmjs.org fügt viel verbesserte Dokumentation.
Setup Kappa: ich Kappaeine große npm-proxy von Paypal. (Ich vermute, Sie haben eine sehr ähnliche use-case für die meisten Menschen, die wollen ein eigenes repository, das war genau, was ich wollte).
Setup npm_lazy (optional): ich wollte einen schönen cache für Häufig verwendete Pakete im Falle npmjs.org ging, so fügte ich npm_lazy vor der ganzen Sache, als eine caching-Schicht.
Ganze Sache dauerte zwei Tage(ish) zum laufen zu bringen. Als Seite beachten, wenn Sie besorgt über die Menschen drängen, um die öffentliche Registrierung durch Zufall, ich empfehle das hinzufügen dieser auf Ihre
package.json
:"publishConfig": { "registry": "http://my-registry.example.com" },
Dies ist wirklich nur ein bisschen paranoia; sobald Sie setup Ihre npm auf Ihre Kappa/npm_lazy Instanz, Kappa Griffe publishing auf Ihr eigenes repository für Sie.
Hinweis: Kappa wird nur alle veröffentlichen, auf dem ersten repository in der config. Wenn Sie brauchen, um zu veröffentlichen, um sowohl Ihre privaten Registrierung, und die öffentlichkeit, müssen Sie erarbeiten Ihre eigene Lösung.
InformationsquelleAutor der Antwort
In Ihrem Paket.json, können Sie eine beliebige url ein gültiges npm-Modul verpackt. Ich nutze ein s3 mit einem Eimer, der name ist schwer zu erraten.
S3 ist nur ein Beispiel, Sie könnte jeden beliebigen bedeuten kann, dass eine Datei auf einem web-server, kann es auch geschützt werden, die über die basic-auth.
InformationsquelleAutor der Antwort Pascal Belloncle
Ich glaube, dass Paypal ist Kappa Projekt passen würde.
Hier ist ein Artikel Beschreibung Paypal Kraken-Projekt und wie Kappa passt.
Ich verstehen, es war nicht verfügbar zum Zeitpunkt der Quentin Frage, aber vielleicht wäre es hilfreich für andere, die kommen hier entlang.
InformationsquelleAutor der Antwort user605331
npm-registry-client GitHub issue #42 listet mehrere Möglichkeiten, wie man erstellen Sie Ihre eigenen repository spiegeln. nämlich:
Insgesamt scheint es mir, dass man die besten Antworten durch die Suche durch Probleme in der Repositorys, die im Besitz von https://github.com/npm oder bitten Sie Ihre Frage dort
InformationsquelleAutor der Antwort xmojmr
Basiert nur auf hören zu einer letzten episode von NodeUp (#37?), Ich denke, möchten Sie vielleicht einen Blick auf irisnpm. Von was ich mich erinnere, es ist eine Dienstleistung, die Ihnen eine zusammengeführte Satz von der öffentlichkeit-Module und Ihre eigenen Module.
InformationsquelleAutor der Antwort David Weldon
Als Dominic Barnes schlug vor, wir replizieren können, nur
_design
Dokumente (CouchDB-Tisch-Systeme)Wie zu replizieren, design-Dokumente nur?
Jedoch muss er prüfen, ob einige Daten, die benötigt werden.
InformationsquelleAutor der Antwort Paul Verest
Könnten Sie replizieren die Module, die Sie brauchen, und dann schreiben Sie einen proxy-server, der sieht für ein Modul in Ihrer Replikation. Wenn ein Modul nicht vorhanden ist, könnte es leiten Sie die Anfrage an NPM und gibt das Ergebnis aus.
InformationsquelleAutor der Antwort pvorb