Jak zainstalować pakiet npm bezpośrednio z GitHub?

Próba instalacji modułów z Githuba skutkuje:

ENOENT błąd na pakiecie.json.

Łatwo odtworzyć za pomocą express:

npm install https://github.com/visionmedia/express wyrzuca błąd.

npm install express działa.

Dlaczego nie mogę zainstalować z github?

Oto wyjście konsoli:

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
Author: mikemaccana, 2013-07-07

13 answers

Ponieważ https://github.com/visionmedia/express jest adresem URL strony internetowej, a nie modułem npm. Użyj tego smaku:

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

Lub ten smak jeśli potrzebujesz SSH:

git+ssh://[email protected]/visionmedia/express.git
 836
Author: Peter Lyons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-09 23:37:30

Możesz również wykonać npm install visionmedia/express Aby zainstalować z Github

Lub

npm install visionmedia/express#branch

Istnieje również wsparcie dla instalacji bezpośrednio z Gist, Bitbucket, Gitlab i wielu innych wyspecjalizowanych formatów. Zobacz też npm install dokumentacja dla nich wszystkich.

 493
Author: user2487135,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 04:24:13

Jeśli git nie jest zainstalowany, możemy spróbować

npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master
 108
Author: Amitesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-02 06:43:11

Istnieje również npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH}, aby użyć innej gałęzi.

 43
Author: zakelfassi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-18 09:38:00

Aktualizacja wrzesień 2016

Instalacja z vanilla https github Url teraz wydaje się działać:

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

EDIT: jest kilku użytkowników komentujących, że nie możesz tego zrobić dla wszystkich modułów, ponieważ czytasz z systemu kontroli źródła, który może zawierać nieprawidłowy/nieskompilowany / błędny kod. Aby było jasne (chociaż nie powinno to być oczywiste): biorąc pod uwagę, że kod w repo jest w stanie npm-usable , możesz teraz całkiem szczęśliwie zainstalować bezpośrednio z github

 31
Author: Fergie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-07 12:37:40

Aktualna topowa odpowiedź Petera Lyonsa nie ma związku z najnowszymi wersjami NPM. Na przykład użycie tego samego polecenia, które zostało skrytykowane w tej odpowiedzi, jest teraz w porządku.

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

Jeśli nadal masz problemy, może to być problem z dowolnym pakietem, którego używałeś.

 30
Author: Colin D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-02 16:08:49

Metody są teraz dość dobrze omówione w npm ' s install documentation , jak również w wielu innych odpowiedziach tutaj.

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>]

Jednak coś, co ostatnio się zmieniło, to dodanie skryptu prepare w miejsce skryptu prepublish.{[11] } rozwiązuje to długotrwały problem, w którym Moduły zainstalowane przez git nie uruchamiały skryptu prepublish, a tym samym nie wykonywały kroków budowania, które występują, gdy moduł jest publikowany w rejestrze npm. Zobacz też https://github.com/npm/npm/issues/3055 .

Oczywiście autorzy modułów będą musieli zaktualizować swój pakiet.json, aby użyć nowej dyrektywy prepare, aby to zaczęło działać.

 13
Author: nextgentech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-20 04:01:09

Zainstaluj go bezpośrednio:

npm install visionmedia/express

Alternatywnie możesz dodać "express": "github:visionmedia/express" do sekcji "dependencies" pliku package.json, a następnie uruchomić:

npm install
 11
Author: Tyler Long,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-06 05:24:54

Ogólna forma składni to

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

Czyli w Twoim przypadku będzie to

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

Z npmjs docs:

Npm install:

Instaluje pakiet od hostowanego dostawcy Gita, klonując go za pomocą git. Dla pełnego ZDALNEGO ADRESU URL git, tylko ten adres URL będzie próbowany.

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

| #semver:] jest jednym z git, git+SSH, Git+http, git + https lub Git + file.

Jeśli podano#, zostanie on użyty do sklonowania dokładnie tego / align = "left" / Jeśli commit-owski ma format # semver:, może być dowolny poprawny zakres semver lub dokładna Wersja, A npm będzie szukał wszelkie tagi lub refy pasujące do tego zakresu w zdalnym repozytorium, podobnie jak to byłoby dla zależności rejestru. If no # or

SemVer: jest określony, wtedy używany jest master.

Jeśli repozytorium korzysta z podmodułów, będą one sklonowany również.

Jeśli instalowany pakiet zawiera skrypt prepare, jego zależności i devDependencies zostaną zainstalowane, a prepare skrypt zostanie uruchomiony, zanim pakiet zostanie spakowany i zainstalowany.

Następujące zmienne środowiska git są rozpoznawane przez npm i będą być dodane do środowiska podczas uruchamiania git:

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

Zobacz stronę podręcznika git dla szczegóły.

Przykłady:

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
 10
Author: ishandutta2007,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-06 00:12:24

Możesz też zrobić

npm i alex-cory/fasthacks

Lub

npm i github:alex-cory/fasthacks

W zasadzie:

npm i user_or_org/repo_name
 9
Author: Alex Cory,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-27 23:54:52

UPDATE Teraz możesz zrobić: npm install git://github.com/foo/bar.git
lub w package.json:

"dependencies": {
  "bar": "git://github.com/foo/bar.git"
}
 8
Author: Sagiv Ofek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-26 00:06:21

Możesz bezpośrednio zainstalować repo Githuba za pomocą npm install, Jak to: npm install https://github.com/futurechallenger/npm_git_install.git --save

Uwaga: w repo, które zostanie zainstalowane przez polecenie npm:

  1. może trzeba mieć dist folder w repo, zgodnie z komentarzem @ Dan Dascalescu.
  2. zdecydowanie musisz mieć Pakiet.json in you repo! o czym zapomniałem dodać.
 3
Author: Bruce Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 03:05:12

Spróbuj tego polecenia

 npm install github:[Organisation]/[Repository]#[master/BranchName] -g

To polecenie zadziałało na mnie.

 npm install github:BlessCSS/bless#3.x -g
 -4
Author: Rahil Lakhani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 07:59:32