1199 Stimmen

Wie installiert man ein npm-Paket direkt von GitHub

Beim Versuch, Module von GitHub zu installieren, tritt dieser Fehler auf:

ENOENT-Fehler auf package.json.

Einfach reproduzierbar mit express:

npm install https://github.com/visionmedia/express wirft einen Fehler.

npm install express funktioniert.

Warum kann ich nicht von GitHub installieren?

Hier ist die Konsolenausgabe:

npm http GET https://github.com/visionmedia/express.git
npm http 200 https://github.com/visionmedia/express.git
npm ERR! not a package /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/tmp.tgz
npm ERR! Error: ENOENT, open '/home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     
npm ERR! or email it to:
npm ERR!     

npm ERR! System Linux 3.8.0-23-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "https://github.com/visionmedia/express.git"
npm ERR! cwd /home/guym/dev_env/projects_GIT/proj/somename
npm ERR! node -v v0.10.10
npm ERR! npm -v 1.2.25
npm ERR! path /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/guym/dev_env/projects_GIT/proj/somename/npm-debug.log
npm ERR! not ok code 0

1527voto

Peter Lyons Punkte 137811

Weil https://github.com/visionmedia/express die URL einer Webseite ist und nicht eines npm-Moduls. Verwenden Sie diese Variante: git+{url}.git

git+https://github.com/visionmedia/express.git

oder diese Variante, wenn Sie SSH benötigen:

git+ssh://git@github.com/visionmedia/express.git

oder wenn Sie ein GitHub Enterprise-Repository installieren müssen:

git+https:////.git#

825voto

user2487135 Punkte 8399

Um von GitHub zu installieren, können Sie auch Folgendes tun

npm install visionmedia/express

Oder

npm install visionmedia/express#branch

Es gibt auch Unterstützung für die Installation direkt von einem Gist, Bitbucket, GitLab und einer Reihe anderer spezialisierter Formate. Schauen Sie sich die npm install Dokumentation für alle Möglichkeiten an.

219voto

Amitesh Punkte 2729

Wenn Git nicht installiert ist, können wir Folgendes versuchen:

npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master

85voto

Fergie Punkte 5390

Ab September 2016 funktioniert die Installation von Vanilla-HTTPS-GitHub-URLs:

npm install https://github.com/fergiemcdowall/search-index.git

Dies ist nicht für alle Module möglich, da Sie aus einem Versionskontrollsystem lesen, das möglicherweise ungültigen/nicht kompilierten/fehlerhaften Code enthält. Um es klar zu sagen (obwohl es selbstverständlich sein sollte): Angesichts der Tatsache, dass der Code im Repository einen für NPM verwendbaren Zustand hat, können Sie nun problemlos direkt von GitHub installieren.

Im Oktober 2019 leben wir nun im "Gipfel von TypeScript/React/Babel", und daher ist die JavaScript-Kompilierung sehr verbreitet geworden. Wenn Sie die Kompilierung berücksichtigen müssen, schauen Sie sich prepare an. Dennoch müssen NPM-Module nicht kompiliert werden, und es ist ratsam anzunehmen, dass Kompilierung nicht der Standard ist, insbesondere nicht für ältere Node-Module (und möglicherweise auch nicht für sehr neue, topaktuelle "ESNext"-Module).

75voto

nextgentech Punkte 3365

Die Methoden sind jetzt ziemlich gut abgedeckt in der Installationsdokumentation von npm sowie in den zahlreichen anderen Antworten hier.

npm install git+ssh://git@github.com:/]
npm install git+ssh://git@github.com:/[#semver:^x.x]
npm install git+https://git@github.com//
npm install git://github.com//
npm install github:/[#]

Etwas, das kürzlich geändert wurde, ist jedoch erwähnenswert, dass npm das prepare-Skript hinzugefügt hat, um das prepublish-Skript zu ersetzen. Dies behebt ein langjähriges Problem, bei dem Module, die über Git installiert wurden, das prepublish-Skript nicht ausgeführt haben und daher die Build-Schritte nicht abgeschlossen wurden, die beim Veröffentlichen eines Moduls im npm-Register auftreten. Siehe Run prepublish for Git URL packages #3055.

Natürlich müssen die Modulautoren ihre package.json-Datei aktualisieren, um die neue prepare-Direktive zu verwenden, damit dies funktioniert.

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