it-swarm.com.de

können Sie ein privates Repository für Ihre Organisation zur Verwendung mit npm hosten?

Npm klingt nach einer großartigen Plattform, die in einer Organisation verwendet werden kann. Neugierig, ob ein privates Repo möglich ist, wie bei Nexus/Maven. Bei Google gibt es nichts :(

187
adam

Ich glaube nicht, dass es einen einfachen Weg gibt, dies zu tun.

Ein Blick auf die npm-Dokumentation sagt uns, dass es möglich ist:

Kann ich meine eigene private Registry betreiben?

Ja!

Am einfachsten ist es, die Couch-Datenbank zu replizieren und das gleiche (oder ähnliche) Design-Dokument zum Implementieren der APIs zu verwenden.

Wenn Sie die fortlaufende Replikation von der offiziellen CouchDB aus einrichten und dann Ihre interne CouchDB als Registrierungskonfiguration festlegen, können Sie zusätzlich zu Ihren privaten Paketen alle veröffentlichten Pakete lesen und standardmäßig nur intern veröffentlichen. Wenn Sie dann ein Paket für die ganze Welt veröffentlichen möchten, können Sie einfach --registry config für diesen Befehl überschreiben.

Es gibt auch ein hervorragendes Tutorial zum wie man ein privates npm-Repository erstellt im Uhrenblog.

EDIT (2017-02-26):

Nicht wirklich neu, aber es gibt jetzt bezahlte Pläne , um private Pakete auf NPM zu hosten.

Im Laufe der Jahre hat sich NPM auch für viele Nicht-Node.js-Unternehmen durch das riesige Frontend-Ökosystem, das auf NPM aufbaut, zu einem Faktor entwickelt. Wenn in Ihrem Unternehmen bereits Sonatype Nexus für das interne Hosting von Java-Projekten ausgeführt wird, können Sie es auch für das Hosting von internen NPM-Paketen verwenden.

Andere Optionen umfassen JFrog Artifactory und Inedo ProGet , aber ich habe diese nicht verwendet.

92
pvorb

https://github.com/isaacs/npmjs.org/ : In npm Version v1.0.26 können Sie private git-Repository-URLs 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://[email protected]:my-app.git#v0.0.1",
    }
}

Der folgende Beitrag spricht darüber: Debuggable: Private npm-Module

182
ebdr

Dazu 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:

  • eigene private Pakete veröffentlichen, ohne sie der Öffentlichkeit zugänglich zu machen
  • nur öffentliche Pakete zwischenspeichern, die verwendet werden (es ist nicht erforderlich, die gesamte öffentliche Registrierung zu replizieren)
  • Überschreiben Sie öffentliche Pakete mit einer modifizierten Version, die intern erstellt wurden.
86
TiQP

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
  • Geben Sie jedem anderen kostenpflichtigen Benutzer den Lesezugriff oder den Lesezugriff für diese Pakete
  • Installieren und verwenden Sie alle Pakete, für die andere bezahlte Benutzer Lesezugriff erhalten haben
  • Arbeiten Sie an Paketen mit, für die andere bezahlte Benutzer Ihnen Schreibzugriff erteilt haben

Natürlich ist es nicht kostenlos - derzeit 7 $ pro Monat pro Benutzer.

Und es ist immer noch ein ziemlich neuer Service. Beispielsweise fehlt Unterstützung für Organisationskonten (Stand Juni 2015):

Derzeit sind private Pakete nur für einzelne Benutzer verfügbar, der Support für Organisationskonten ist jedoch in Kürze verfügbar. Sie können in der Zwischenzeit einen Benutzer für Ihre Organisation erstellen. Wenn Sie Support erhalten, können Sie eine Aktualisierung auf eine Organisation durchführen.

Obwohl dies nicht perfekt ist, ist es die offiziellenpm-Lösung zum Verwalten von privaten Paketen, und das macht es erwähnenswert.

UPDATE

Npm Private Packages sind jetzt verfügbar, mit Plänen für Einzelbenutzer und organisations:

  • Unbegrenzte Anzahl öffentlicher und privater Pakete
  • $ 7/Monat/Entwickler
  • Enthält einen Bereichsnamen basierend auf dem Organisationsnamen
  • Veröffentlichen und steuern Sie den Zugriff auf @ org-name/foo

(Haftungsausschluss: nicht in irgendeiner Weise mit npm, Inc. verbunden)

27
bardzusny

Verdaccio ist das, wonach ich gesucht habe, und es verdient seine eigene Antwort;) Es ist eine aktiv gepflegte 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

18
kub1x

Repository-Manager mit Unterstützung für private npm-Registries:

17
Abel Pastur

Ich denke, dass dieser Thread ein Update benötigt. Wenn Sie sich eines der verfügbaren npm-Register ansehen, sind diese extrem schwer und sie benötigen couchdb. Gemfurry und andere brauchen Sie, um sich von öffentlichen Repos abzusetzen. Einige der npm's wie shadow-npm haben keine letzten 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. auseinandersetzen.

9
Pradeep Mahdevu

Dies ist der einfachste Weg, den ich kenne - Hostiere ihn in der Cloud mit der Gemfury private npm-Registry.

Es ist kostenlos und Sie können sich mit Ihrem Github-Konto anmelden. Im Vergleich zum Einrichten einer eigenen Datenbank sollten Sie viel Zeit sparen.

6
alex urdea

Verzeih mir, wenn ich deine Frage nicht gut verstehe, aber hier ist meine Antwort:

Sie können ein privates npm-Modul erstellen und die normalen Befehle von npm verwenden, um es zu installieren. Die meisten Benutzer von node.js verwenden git als Repository. Sie können jedoch das für Sie geeignete Repository verwenden.

  1. In Ihrem Projekt benötigen Sie das Grundgerüst eines NPM-Pakets. Die meisten Knotenmodule verfügen über git-Repositorys, in denen Sie sehen können, wie sie In NPM integrieren (die package.json-Datei ist, glaube ich, ein Teil von Dies und die NPM-Website zeigt Ihnen, wie Sie ein npm-Paket erstellen).
  2. Verwenden Sie etwas Ähnliches wie Make, um zu machen, dass Ihr Paket Im Internet oder in Ihrem Netzwerk verfügbar ist, um es für npm Installationsdownloads bereitzustellen.
  3. Sobald Ihr Paket fertig ist, verwenden Sie

    npm install * tarball_url *

6
EhevuTov

Etwas spät zur Party, aber NodeJS (ab dem 14. November, denke ich) unterstützt NPM-Repositories für Unternehmen - mehr dazu erfahren Sie auf ihrer offiziellen Seite .

Aus einem flüchtigen Blick scheint es, dass npmE eine Spiegelung des NPM-Repositorys durchlässt, dh, es wird Pakete im NPM-Repository real nachschlagen, wenn es keine auf Ihrem internen finden kann. Scheint sehr nützlich!

npm Enterprise ist eine lokale Lösung für die sichere gemeinsame Nutzung und Verteilung von JavaScript-Modulen in Ihrem Unternehmen. Das Team, das npm verwaltet, und die öffentliche npm-Registry. Es ist für Teams konzipiert, die Folgendes benötigen:

einfaches internes Teilen von privaten Modulen bessere Kontrolle der Entwicklung - und Bereitstellungsworkflow - höhere Sicherheit bei der Bereitstellung von Open Source Module erfüllen die gesetzlichen Anforderungen an den lokalen Hostcode npmE ist privat npm

npmE ist eine npm-Registry, die mit demselben npm-Standardclient arbeitet Sie verwenden bereits, bietet jedoch die Funktionen, die von größeren .__ benötigt werden. Organisationen, die jetzt mit Begeisterung Knoten einsetzen. Es ist gebaut von npm, Inc., dem Sponsor des Open Source-Projekts npm und dem Host der öffentlichen npm Registry.

Leider ist es nicht kostenlos. Sie können eine Testversion erhalten, es handelt sich jedoch um kommerzielle Software. Dies ist nicht so toll für Solo-Entwickler, aber wenn Sie ein Solo-Entwickler sind, haben Sie GitHub :-)

5
Dan Pantry

Dieser Beitrag beschreibt, wie eine private Registry eingerichtet wird

  • vergewissern Sie sich, dass couchdb in Ihrem System installiert ist
  • Zum Replizieren von npmjs.org verwenden Sie den folgenden Befehl

    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 im Befehl enthalten ist. Dieser verwendet die _changes-API von CouchDB und zieht alle neuen Änderungen ein, wenn diese API benachrichtigt wird.

Wenn Sie diese Replikationen jemals beenden möchten, können Sie einfach "cancel":true hinzufügen. 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"

Gehen Sie dann zu npmjs.org Readme , um npm zu installieren (stellen Sie sicher, dass nodejs und git installiert sind). 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 
3
nickleefly

wir verwenden den Sonatype Nexus. Die Version ist Nexus Repository ManagerOSS 3.6.1-02. Und ich bin sicher, dass es das private NPM-Repository unterstützt und das Paket zwischengespeichert hat. 

 enter image description here

3
Xin Meng

Ich bin vielleicht etwas spät auf der Party, aber eine der beiden Möglichkeiten könnte für Sie funktionieren:

  1. http://www.jfrog.com/confluence/display/RTF/Npm+Repositories
  2. https://github.com/krakenjs/kappa
2
Prabhat

Sie können Aragon Package Manager auch verwenden, wenn Sie einen dezentralisierten Ansatz bevorzugen:

  1. Verwendung von APM: http://blog.aragon.one/using-apm-to-replace-npm-and-other-centralized-package-managers/
  2. Bereitstellen von APM: https://github.com/aragon/aragonOS#apm
0
countTheRow