389 Stimmen

Wie kann ich ein privates NPM-Modul ohne meine eigene Registrierung installieren?

Ich habe einigen gemeinsam genutzten Code in ein NPM-Modul aufgenommen, das ich nicht in die zentrale Registrierung hochladen möchte. Die Frage ist, wie ich es aus anderen Projekten installieren kann.

Der naheliegendste Weg ist wahrscheinlich, eine eigene NPM-Registrierung einzurichten, aber laut der Dokumentation ist das mit viel Aufwand verbunden.

Kann ich einfach ein NPM-Modul installieren, das sich im lokalen Dateisystem befindet, oder vielleicht sogar aus Git?

npm install --from-git git@server:project

10voto

dynamiclynk Punkte 2134

Strukturieren Sie Ihren Code in einer zugänglichen Weise wie unten. Wenn dies für Sie möglich ist.

  • NodeProjs \Apps\MainApp\package.json

  • NodeProjs \Modules\DataModule\package.json

Innerhalb von MainApp @ NodProjs \Apps\MainApp\

npm install --S ../../Modules/DataModule

Möglicherweise müssen Sie package.json als aktualisieren:

 "dependencies": {
       "datamodule": "../../Modules/DataModule"
}

Das hat in meiner Situation funktioniert.

1 Stimmen

In @2021 funktioniert dies - "{{node_module__name}}": "file:{{node_module__path}}"

9voto

bwest87 Punkte 1203

Ich hatte das gleiche Problem, und nach einigem Suchen fand ich Reggie ( https://github.com/mbrevoort/node-reggie ). Es sieht ziemlich solide aus. Es ermöglicht die einfache Veröffentlichung von NPM-Modulen auf privaten Servern. Es ist nicht perfekt (keine Authentifizierung bei der Installation) und es ist noch sehr jung, aber ich habe es lokal getestet und es scheint zu tun, was es tun soll.

Das heißt... (und das nur aus den Unterlagen)

npm install -g reggie
reggie-server -d ~/.reggie

wechseln Sie dann in Ihr Modulverzeichnis und...

reggie -u http://<host:port> publish 
reggie -u http://127.0.0.1:8080 publish 

Schließlich können Sie Pakete von reggie installieren, indem Sie die URL entweder in einem direkten npm-Install-Befehl oder in einer package.json verwenden... wie folgt

npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0

oder

dependencies: {
    "foo": "http://<host:port>/package/foo/1.0.0"
}

5voto

roo2 Punkte 5799

Npm bietet jetzt unbegrenzte privat gehostete Module für $7/Benutzer/Monat wie folgt verwendet

cd private-project
npm login

in Ihrem Paket json setzen "name": " @username/private-project"

npm publish

dann Ihr Projekt zu verlangen:

cd ../new-project
npm install --save @username/private-project

1 Stimmen

Ist dafür ein clientseitiger Anmeldeschritt erforderlich?

0 Stimmen

Was ist die Alternative dazu? Zum Beispiel, wenn Sie Ihr "Paket" auf S3 hosten und von dort abrufen möchten.

5voto

Isaiah Punkte 484

Dies war was ich gesucht habe - Holen Sie sich das Neueste aus dem "privaten Repo":

GitHub :

$ npm install git+https://token:x-oauth-basic@github.com/username/my-new-project.git
$ npm install git+ssh://git@github.com/username/my-new-project.git

Bitbucket :

$ npm install git+https://username:password@bitbucket.org/username/my-new-project.git
$ npm install git+ssh://git@bitbucket.org/username/my-new-project.git

4voto

Kramer Punkte 489

Beginnend mit arcseldon's Antwort Ich fand heraus, dass der Teamname in der URL wie folgt benötigt wurde:

npm install --save "git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git"

Und beachten Sie, dass der API-Schlüssel nur für das Team und nicht für einzelne Nutzer verfügbar ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X