Npm klingt nach einer großartigen Plattform für die Verwendung innerhalb eines Unternehmens. Neugierig, ob ein privates Repo möglich ist, wie bei Nexus / Maven. Bei Google wird nichts angezeigt :(
Npm klingt nach einer großartigen Plattform für die Verwendung innerhalb eines Unternehmens. Neugierig, ob ein privates Repo möglich ist, wie bei Nexus / Maven. Bei Google wird nichts angezeigt :(
Antworten:
Ich glaube nicht, dass es einen einfachen Weg gibt, dies zu tun.
Ein Blick auf die npm-Dokumentation zeigt uns, dass es möglich ist:
Kann ich meine eigene private Registrierung betreiben?
Ja!
Am einfachsten ist es, die Couch-Datenbank zu replizieren und die APIs mit demselben (oder einem ähnlichen) Designdokument zu implementieren.
Wenn Sie die kontinuierliche Replikation von der offiziellen CouchDB aus einrichten und dann Ihre interne CouchDB als Registrierungskonfiguration festlegen, können Sie alle veröffentlichten Pakete zusätzlich zu Ihren privaten lesen und standardmäßig nur intern veröffentlichen. Wenn Sie dann ein Paket veröffentlichen möchten, das die ganze Welt sehen kann, können Sie einfach die
--registry
Konfiguration für diesen Befehl überschreiben .
Es gibt auch ein hervorragendes Tutorial zum Erstellen eines privaten npm-Repositorys im Clock-Blog.
BEARBEITEN (26.02.2017):
Nicht wirklich neu, aber es gibt jetzt kostenpflichtige Pläne , private Pakete auf NPM zu hosten.
Im Laufe der Jahre ist NPM durch das riesige Frontend-Ökosystem, das auf NPM aufbaut, auch für viele Nicht-Node.js-Unternehmen zu einem Faktor geworden. Wenn in Ihrem Unternehmen Sonatype Nexus bereits zum internen Hosten von Java-Projekten ausgeführt wird, können Sie es auch zum Hosten interner NPM-Pakete verwenden.
Andere Optionen sind JFrog Artifactory und Inedo ProGet , aber ich habe diese nicht verwendet.
https://github.com/isaacs/npmjs.org/ : In der npm-Version v1.0.26 können Sie URLs für private Git-Repositorys als Abhängigkeit in Ihren package.json-Dateien angeben. Ich habe es nicht benutzt, würde mich aber über Feedback freuen. Folgendes müssen Sie tun:
{
"name": "my-app",
"dependencies": {
"private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
}
}
Der folgende Beitrag spricht darüber: Debuggable: Private npm-Module
Hierfür gibt es ein einfach zu verwendendes npm-Paket. https://www.npmjs.org/package/sinopia
Kurz gesagt, Sinopia ist ein privater / caching npm-Repository-Server, den Sie ohne Konfiguration einrichten können.
Sinopia kann verwendet werden, um:
Verdaccio ist das, wonach ich gesucht habe und es verdient seine eigene Antwort;) Es ist eine aktiv gewartete Gabelung von Sinopia (hochgelobte Antwort hier ). Es ist eine npm-Registrierung als npm-Paket und kann gefunden werden
hier: https://github.com/verdaccio/verdaccio ,
hier: https://www.verdaccio.org ,
hier: pnpm i -g verdaccio
oder
hier:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio
Am 14. April (2015) wurden npm private Module eingeführt.
Wenn Sie für private Module bezahlen, können Sie:
- Hosten Sie so viele private Pakete, wie Sie möchten
- Gewähren Sie jedem anderen bezahlten Benutzer Lese- oder Lese- / Schreibzugriff für diese Pakete
- Installieren und verwenden Sie alle Pakete, auf die andere bezahlte Benutzer Ihnen Lesezugriff gewährt haben
- Arbeiten Sie an Paketen zusammen, auf die andere bezahlte Benutzer Ihnen Schreibzugriff gewährt haben
Natürlich ist es nicht kostenlos - derzeit 7 $ pro Monat pro Benutzer.
Und es ist immer noch ein ziemlich neuer Service. Beispielsweise fehlt die Unterstützung für Organisationskonten (Stand Juni 2015):
Derzeit sind private Pakete nur für einzelne Benutzer verfügbar, die Unterstützung für Organisationskonten erfolgt jedoch in Kürze. Sie können in der Zwischenzeit einen Benutzer für Ihre Organisation erstellen, und wir können ihn auf eine Organisation aktualisieren, wenn der Support verfügbar ist.
Obwohl es nicht perfekt ist, ist es das offizielle npm-Lösung für die Verwaltung privater Pakete, und das macht es selbst erwähnenswert.
AKTUALISIEREN
Npm Private Packages sind jetzt verfügbar, mit Plänen für einzelne Benutzer und Organisationen :
- Unbegrenzte Anzahl öffentlicher und privater Pakete
- $ 7 / Monat / Entwickler
- Enthält einen Bereichsnamen, der auf dem Namen der Organisation basiert
- Veröffentlichen und steuern Sie den Zugriff auf @ org-name / foo
(Haftungsausschluss: nicht einmal in irgendeiner Weise mit npm, Inc. verbunden )
Repository-Manager mit Unterstützung für private npm-Registries:
Ich denke, dieser Thread braucht ein Update. Wenn Sie sich eines der verfügbaren npm-Register ansehen, sind sie extrem schwer und benötigen Couchdb. Gemfurry und andere brauchen dich, um dich von öffentlichen Repos zu lösen. Einige der Npm wie Shadow-Npm haben keine aktuellen Commits .
Dann fanden wir Reggie . Es hat eine gute Commit-Aktivität, ist extrem einfach zu installieren und zu verwenden und hat eine ziemlich gute Community-Unterstützung . Es ist extrem leicht und Sie müssen sich nicht mit Couchdb usw. befassen.
Vergib mir, wenn ich deine Frage nicht gut verstehe, aber hier ist meine Antwort:
Sie können ein privates npm-Modul erstellen und es mit den normalen Befehlen von npm installieren. Die meisten Benutzer von node.js verwenden git als Repository, aber Sie können jedes Repository verwenden, das für Sie funktioniert.
Sobald Ihr Paket fertig ist, verwenden Sie
npm install * tarball_url *
Dies ist der einfachste Weg, den ich kenne - hosten Sie ihn in der Cloud mit der privaten npm-Registrierung von Gemfury .
Es ist kostenlos und Sie können sich mit Ihrem Github-Konto anmelden. Dies sollte Ihnen im Vergleich zum Einrichten einer eigenen Datenbank viel Zeit sparen.
Ein bisschen zu spät zur Party, aber NodeJS (Stand: ~ 14. November, denke ich) unterstützt NPM-Repositories von Unternehmen - mehr erfahren Sie auf deren offizieller Website .
Auf einen flüchtigen Blick scheint es, dass npmE eine Durchfallspiegelung des NPM-Repositorys ermöglicht - das heißt, es werden Pakete im realen NPM-Repository nachgeschlagen, wenn es keines in Ihrem internen Repository findet. Scheint sehr nützlich!
npm Enterprise ist eine lokale Lösung für die sichere Freigabe und Verteilung von JavaScript-Modulen in Ihrem Unternehmen, von dem Team, das npm verwaltet, und der öffentlichen npm-Registrierung. Es ist für Teams konzipiert, die Folgendes benötigen:
Einfache interne gemeinsame Nutzung privater Module Bessere Kontrolle des Entwicklungs- und Bereitstellungsworkflows Strengere Sicherheit bei der Bereitstellung von Open-Source-Modulen. Einhaltung der gesetzlichen Anforderungen für das lokale Hosten von Code. npmE ist private npm
npmE ist eine npm-Registrierung, die mit demselben Standard-npm-Client arbeitet, den Sie bereits verwenden, aber die Funktionen bietet, die von größeren Organisationen benötigt werden, die jetzt begeistert den Knoten übernehmen. Es wurde von npm, Inc., dem Sponsor des Open-Source-Projekts npm und dem Host der öffentlichen npm-Registrierung, erstellt.
Leider ist es nicht kostenlos. Sie können eine Testversion erhalten, aber es handelt sich um kommerzielle Software. Dies ist nicht so toll für Solo-Entwickler, aber wenn Sie ein Solo-Entwickler sind, haben Sie GitHub :-)
In diesem Beitrag wird erläutert, wie Sie eine private Registrierung einrichten
Verwenden Sie den folgenden Befehl, um npmjs.org zu replizieren
curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"
Beachten Sie, dass "continuous":true
der Befehl die _changes-API von CouchDB verwendet und alle neuen Änderungen abruft, wenn diese API benachrichtigt wird.
Wenn Sie diese Replikationen jemals stoppen möchten, können Sie sie einfach hinzufügen "cancel":true
. Dann wäre das Skript
curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"
Dann gehen Sie zu npmjs.org readme installieren npm (stellen Sie sicher , nodejs
und git
installiert ist ). Schlag ist alle Schritte
git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
sudo npm install -g couchapp
npm install couchapp
npm install semver
couchapp push registry/app.js http://localhost:5984/registry
couchapp push www/app.js http://localhost:5984/registry
Ich könnte etwas spät zur Party kommen, aber einer dieser beiden könnte für Sie arbeiten:
Sie können Aragon Package Manager auch verwenden, wenn Sie einen dezentralen Ansatz bevorzugen: