wake-up-neo.com

Wie installiere ich ein npm-Paket von GitHub direkt?

Der Versuch, Module von Github zu installieren, führt zu folgenden Ergebnissen:

ENOENT-Fehler in package.json.

Leicht 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!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

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
764
guy mograbi

Weil https://github.com/visionmedia/express die URL einer Webseite und kein npm-Modul ist. Verwenden Sie diesen Geschmack:

git+https://[email protected]/visionmedia/express.git

oder dieses Aroma, wenn Sie SSH benötigen:

git+ssh://[email protected]/visionmedia/express.git
1032
Peter Lyons

Sie können auch npm install visionmedia/express ausführen, um von Github aus zu installieren

oder

npm install visionmedia/express#branch

Es gibt auch Unterstützung für die direkte Installation von Gist, Bitbucket, Gitlab und einer Reihe anderer spezialisierter Formate. Schauen Sie sich den npm installDokumentation für alle an.

601
user2487135

Wenn Git nicht installiert ist, können wir es versuchen

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

Es gibt auch npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH}, um einen anderen Zweig zu verwenden.

50
zakelfassi

pdate September 2016

Die Installation von Vanilla-https-Github-URLs funktioniert jetzt:

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

EDIT: Es gibt einige Benutzer, die kommentieren, dass Sie dies nicht für alle Module tun können, da Sie aus einem Versionsverwaltungssystem lesen, das möglicherweise ungültigen/nicht kompilierten/fehlerhaften Code enthält. Um es klar zu sagen (obwohl es selbstverständlich sein sollte): vorausgesetzt, der Code im Repo ist in einem Npm-verwendbaren Zustand, können Sie jetzt direkt von Github aus installieren

42
Fergie

Die aktuelle Top-Antwort von Peter Lyons ist für aktuelle NPM-Versionen nicht relevant. Die Verwendung desselben Befehls, der in dieser Antwort kritisiert wurde, ist jetzt in Ordnung.

$ npm install https://github.com/visionmedia/express

Wenn Sie weiterhin Probleme haben, liegt möglicherweise ein Problem mit dem von Ihnen verwendeten Paket vor.

34
Colin D

Die Methoden werden jetzt in npms Installationsdokumentation sowie in den zahlreichen anderen Antworten hier ziemlich gut behandelt.

npm install git+ssh://[email protected]:<githubname>/<githubrepo.git[#<commit-ish>]
npm install git+ssh://[email protected]:<githubname>/<githubrepo.git>[#semver:^x.x]
npm install git+https://[email protected]/<githubname>/<githubrepo.git>
npm install git://github.com/<githubname>/<githubrepo.git>
npm install github:<githubname>/<githubrepo>[#<commit-ish>]

Eine bemerkenswerte Neuerung ist jedoch, dass npm das Skript prepare hinzufügt, um das Skript prepublish zu ersetzen. Dies behebt ein langjähriges Problem, bei dem Module, die über git installiert wurden, das Skript prepublish nicht ausführten und daher den Build nicht abschlossen Schritte, die auftreten, wenn ein Modul in der npm-Registrierung veröffentlicht wird. Siehe https://github.com/npm/npm/issues/3055 .

Natürlich müssen die Modulautoren ihre package.json aktualisieren, damit die neue Anweisung prepare verwendet werden kann.

25
nextgentech

UPDATE jetzt kannst du: npm install git://github.com/foo/bar.git
oder in package.json:

"dependencies": {
  "bar": "git://github.com/foo/bar.git"
}
18
Sagiv Ofek

Die allgemeine Form der Syntax lautet

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]

was für Ihren Fall bedeutet, dass es sein wird

npm install git+ssh://[email protected]/visionmedia/express.git

Aus npmjs docs:

npm install:

Installiert das Paket vom gehosteten Git-Anbieter und klont es mit Git. Für eine vollständige git-Remote-URL wird nur diese URL versucht.

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>

| #semver:] ist eine der folgenden Dateien: git, git + ssh, git + http, git + https oder git +.

Wenn # angegeben wird, wird genau dieses Commit geklont. Wenn das Commit-ish das Format #semver: hat, kann es ein beliebiger gültiger Semver-Bereich oder eine genaue Version sein, und npm sucht im Remote-Repository nach Tags oder Refs, die mit diesem Bereich übereinstimmen, ähnlich wie bei einer Registrierungsabhängigkeit. Wenn weder # noch

semver: wird angegeben, dann wird master verwendet.

Wenn das Repository Submodule verwendet, werden diese Submodule ebenfalls geklont.

Wenn das zu installierende Paket ein Vorbereitungsskript enthält, werden dessen Abhängigkeiten und devDependencies installiert und das Vorbereitungsskript wird ausgeführt, bevor das Paket gepackt und installiert wird.

Die folgenden git-Umgebungsvariablen werden von npm erkannt und der Umgebung hinzugefügt, wenn git ausgeführt wird:

  • GIT_ASKPASS
  • GIT_EXEC_PATH
  • GIT_PROXY_COMMAND
  • GIT_SSH
  • GIT_SSH_COMMAND
  • GIT_SSL_CAINFO GIT_SSL_NO_VERIFY

Einzelheiten finden Sie auf der Git-Manpage.

Beispiele:

npm install git+ssh://[email protected]:npm/npm.git#v1.0.27
npm install git+ssh://[email protected]:npm/npm#semver:^5.0
npm install git+https://[email protected]/npm/npm.git
npm install git://github.com/npm/npm.git#v1.0.27
GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/npm.git npm install
17
ishandutta2007

Installiere es direkt:

npm install visionmedia/express

Alternativ können Sie "express": "github:visionmedia/express" zum Abschnitt "dependencies" der Datei package.json hinzufügen und dann ausführen:

npm install
14
Tyler Long

Das könntest du auch tun

npm i alex-cory/fasthacks

oder

npm i github:alex-cory/fasthacks

Grundsätzlich gilt:

npm i user_or_org/repo_name
9
Alex Cory

Sie können ein Github-Repo direkt mit dem Befehl npm install wie folgt installieren: npm install https://github.com/futurechallenger/npm_git_install.git --save

HINWEIS: In dem Repo, das mit dem Befehl npm installiert wird:

  1. vielleicht musst du einen dist Ordner in deinem Repo haben, so @Dan Dascalescus Kommentar.
  2. Sie müssen definitiv ein package.json in Ihrem Repo haben! was ich vergessen habe hinzuzufügen.
6
Bruce Lee

Einfach:

npm install *GithubUrl*.git --save

beispiel:

npm install https://github.com/visionmedia/express.git --save
4
Khurshid Ansari