Ich habe einen gemeinsam genutzten Code genommen und in ein NPM-Modul eingefügt, das ich nicht in die zentrale Registrierung hochladen möchte. Die Frage ist, wie installiere ich es aus anderen Projekten?
Der naheliegende Weg ist wahrscheinlich, meine eigene NPM-Registrierung einzurichten, aber laut Dokumentation ist dies mit viel Aufwand verbunden.
Kann ich einfach ein NPM-Modul installieren, das sich auf dem lokalen Dateisystem befindet, oder vielleicht sogar von Git?
npm install --from-git git@server:project
node.js
npm
package
npm-private-modules
Futlib
quelle
quelle
npm install
alle Dateien in Ihr Projektverzeichnis kopiert wurden. Die Pfade in denrequire
Anweisungen beziehen sich also nur auf Ihr Projektverzeichnis.install
das dann nicht einfach dort installiert und nicht für das Projekt, für das Sie es verwenden möchten?#<ref>
am Ende der Git-URL ein hinzufügen , zgit://github.com/visionmedia/express.git#v0.0.1
. (b) Um sicher zu gehen, fügen Sie"private": true
die package.json Ihrer privaten Repos hinzu. Dadurch wird sichergestellt, dass Sie mit npm niemals versehentlich Ihre geheime Sauce in der offiziellen npm-Registrierung veröffentlichen können. (laut debuggable.com/posts/… )npm i git+http://all/the/things.git
obwohl es gutgit clone http://all/the/things.git
funktioniertIn Ihren privaten npm-Modulen hinzufügen
zu Ihrem package.json
Um dann auf das private Modul in einem anderen Modul zu verweisen, verwenden Sie dies in Ihrer package.json
quelle
"private": true
Teil nicht erforderlich ist, aber es verhindert, dass Ihr privates Repo versehentlich in der öffentlichen npm-Registrierung veröffentlicht wird.npm install <git remote url>
Abschnitt gibt es Optionen wieGIT_ASKPASS
und.GIT_SSH
Ein Beispiel für die Auswahl eines anderen Schlüssels als der Standard-ID_RSA:GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/npm.git
Ja, du kannst! Aus den Dokumenten https://docs.npmjs.com/cli/install
Ist npm nicht brillant?
quelle
tar -czf my-package.tar.gz dist
(vorausgesetzt, Ihrdist
Ordner enthält auch eine richtigepackage.json
Datei), können Sie diesnpm install ../my-lib/my-package.tar.gz
aus Ihrem anderen Projekt heraus tun.Update Januar 2016
Neben anderen Antworten gibt es manchmal das Szenario, in dem private Module in einem Teamkontext verfügbar sein sollen.
Sowohl Github als auch Bitbucket unterstützen das Konzept der Generierung eines Team- API-Schlüssels . Dieser API-Schlüssel kann als Kennwort verwendet werden , um API-Anforderungen als dieses Team auszuführen.
In Ihren privaten npm-Modulen hinzufügen
zu Ihrem package.json
Um dann auf das private Modul in einem anderen Modul zu verweisen, verwenden Sie dies in Ihrer package.json
Dabei ist Teamname = myteamname und API-Schlüssel = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4
Hier beziehe ich mich auf ein Bitbucket-Repo, aber es ist auch mit Github fast identisch.
Als Alternative können Sie jetzt, wenn es Ihnen wirklich nichts ausmacht, 7 US-Dollar pro Monat (zum Zeitpunkt des Schreibens) zu zahlen, sofort private NPM-Module verwenden.
quelle
FWIW: Ich hatte Probleme mit all diesen Antworten, wenn es um ein Repository für private Organisationen ging.
Folgendes hat bei mir funktioniert:
Zum Beispiel:
Ich bin mir nicht ganz sicher, warum die anderen Antworten in diesem Fall bei mir nicht funktioniert haben, da ich sie zuerst ausprobiert habe, bevor ich auf Google geklickt und diese Antwort gefunden habe. Und die anderen Antworten sind die, die ich in der Vergangenheit gemacht habe.
Hoffentlich hilft das jemand anderem.
quelle
https://
undIch hatte das gleiche Problem und fand nach einigem Suchen Reggie ( https://github.com/mbrevoort/node-reggie ). Es sieht ziemlich solide aus. Es ermöglicht das einfache Veröffentlichen von NPM-Modulen auf privaten Servern. Nicht perfekt (keine Authentifizierung bei der Installation) und es ist noch sehr jung, aber ich habe es lokal getestet und es scheint das zu tun, was es verspricht.
Das ist ... (und das nur aus ihren Dokumenten)
dann cd in dein Modulverzeichnis und ...
Schließlich können Sie Pakete von reggie installieren, indem Sie diese URL entweder in einem direkten npm-Installationsbefehl oder in einer package.json-Datei verwenden
oder..
quelle
Strukturieren Sie Ihren Code wie unten beschrieben zugänglich. Wenn dies für Sie möglich ist.
In MainApp @ NodProjs \ Apps \ MainApp \
Möglicherweise müssen Sie package.json wie folgt aktualisieren:
Das hat für meine Situation funktioniert.
quelle
Npm bietet jetzt unbegrenzt private gehostete Module für 7 US-Dollar pro Benutzer und Monat an
in Ihrem Paket json set
"name": " @username/private-project"
dann, um Ihr Projekt zu fordern:
quelle
Beginnend mit der Antwort von arcseldon stellte ich fest, dass der Teamname in der URL wie folgt benötigt wurde:
Beachten Sie, dass der API-Schlüssel nur für das Team verfügbar ist, nicht für einzelne Benutzer.
quelle
Konfigurieren Sie die Installation aus dem öffentlichen Github-Repository, auch wenn sich der Computer unter einer Firewall befindet:
quelle
Ich verwende Folgendes mit einem privaten Github-Repository:
quelle
Das habe ich gesucht :
quelle
Sie können Verdaccio verwenden für diesen Zweck Hierbei handelt es sich um eine einfache private npm-Proxy-Registrierung, die in Node.js erstellt wurde. Es ist auch kostenlos und Open Source. Durch die Verwendung von Verdaccio ist der Aufwand nicht so hoch wie bei einer einfachen privaten npm-Registrierung.
Detaillierte Informationen zur Installation und Ausführung finden Sie auf der Website. Hier sind die folgenden Schritte:
Es erfordert
node >=8.x
.Es hat auch ein Docker, so dass Sie es einfach in Ihrem öffentlich verfügbaren Docker veröffentlichen können, und voila, Sie haben ein privates npm-Repository, das auf andere Weise an andere verteilt werden kann, während Sie es konfigurieren!
quelle
Sehr einfach -
Es setzt
registry = "https://path-to-your-registry"
diese Zeile tatsächlich auf/Users/<ur-machine-user-name>/.npmrc
Alle Werte, die Sie explizit oder standardmäßig festgelegt haben, können angezeigt werden durch -
npm config list
quelle