Doğrudan GitHub'dan bir npm paketi nasıl kurulur?


870

Github'dan modüller kurmaya çalışmak şu sonuçları verir:

Package.json üzerinde ENOENT hatası.

Ekspres kullanarak kolayca çoğaltılır:

npm install https://github.com/visionmedia/express hata veriyor.

npm install express İşler.

Neden github'dan yükleyemiyorum?

Konsol çıkışı:

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!     <npm-@googlegroups.com>

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

1
Herkes package.json devDependencies biçimini verebilir mi?
Adam

1
Ekleyebilir @Adam "express": "github:visionmedia/express"için "dependencies"bölüm package.json filesonra çalıştırın: npm install(aşağıda belirtildiği gibi)
Danny

@danny, bu benim için işe yaramıyor. i etkinleştirmek için bu ekspres repo bir dist klasörü olup olmadığını merak ediyorum.
ml242

Yanıtlar:


1158

Çünkü https://github.com/visionmedia/expressnpm modülü değil, web sayfasının URL'si. Bu lezzeti kullanın:

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

veya SSH'ye ihtiyacınız varsa bu lezzet:

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

86
git+https://github.com/visionmedia/express.gitSsh yerine https kullanmak için de kullanabilirsiniz .
Steve Willcock

43
Eğer bir olmalı yüklemek istediğinizi depo Not npm modülü , bir içermelidir package.jsondosya veya başka bu hatayı alırsınız: Error: ENOENT, open 'tmp.tgz-unpack/package.json'.
GabLeRoux

20
belirli bir şube istiyorum
kilianc

3
Şimdilik düşündüğüm tek çözüm ... / express.git # commit
Gaston Sanchez ile

39
Kabuktan #belirli bir dalı kullanmak için kaçmanız gerekebileceğini söylemeye değer , yani:npm install git+https://github.com/user/repo.git\#branch
mor

655

npm install visionmedia/expressGithub'dan yüklemek için de yapabilirsiniz

veya

npm install visionmedia/express#branch

Doğrudan bir Gist, Bitbucket, Gitlab ve diğer birçok özel formattan yükleme desteği de vardır. Bak npm install belgelere hepsi için.


19
Ne, URL belirtmeden? Npm hangi lezzet barındırma hizmetini kullandığınızı nasıl biliyor?
Jake Rayson

22
@Jake Rayson: 1.1.65 sürümünden beri mümkündür ve github.comsadece çalışır .
ezze

5
Windows'ta benim için çalışmadı - sadece geçerli dizinin bir alt klasöründen yüklemeye çalıştı.
Jarrod Mosen

7
1.4.28
user3751385

1
@ user3751385 Genel yüklemeler npm 3.3.8'de çalışıyor gibi görünüyor.
XåpplI'-I0llwlg'I -

170

Git kurulu değilse deneyebiliriz

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

10
Mükemmel cevap! Diğer komutlar (diğer yanıtlardan) bazı git getirme mantığına yapışmışken benim için çalıştı.
Daniel Kmak

2
Bunun yerine etiket adlarını da kullanabilirsiniz master. Muhtemelen bu şekilde yapmak daha güvenlidir.
mpen

4
Şubelerle çalışırken güzel, genel bir biçim cevabı dahil etmek için cevabınızı değiştirmelisiniz /tarball/, ilk başta fark etmedim
Lu Roman

2
Docker konteynerinden bir bağımlılık kurarken benim için çalışan tek cevap bu.
Fela Maslen

1
Bu, tüm repo'nun indirilmesini gerektirmemek için de mükemmeldir. Teşekkürler!
som

58

Eylül 2016 Güncellemesi

Vanilya https github URL'lerinden yükleme artık işe yarıyor:

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

DÜZENLEME 1: geçersiz / derlenmemiş / buggy kodu içerebilen bir kaynak kontrol sisteminden okuduğunuz için bunu tüm modüller için yapamayacağınızı söyleyen birkaç kullanıcı var. Net olmak gerekirse (söylemeden geçmesine rağmen): repodaki kodun npm kullanılabilir durumda olduğu göz önüne alındığında , artık doğrudan mutlu bir şekilde github'dan yükleyebilirsiniz.

DÜZENLEME 2: (21-10-2019) Şimdi "zirve Yazı Tipi / Tepki / Babil" ile yaşıyoruz ve bu nedenle JavaScript derlemesi oldukça yaygın hale geldi. Derlemeyi hesaba katmanız gerekiyorsa dikkat edin prepare. Yani, söz konusu NPM modülleri yok gerek derlenmiş olması ve bu derleme özellikle yaşlı düğüm modülleri için varsayılan değildir (ve muhtemelen de çok yeni, kanama-kenar "ESNext" -y olanlar için) varsaymak akıllıca olacaktır.


9
Depoda bir distklasör bulunmadığı ve çoğunda bulunmadığı sürece GitHub kaynağından istediğiniz npm paketini yükleyemezsiniz . Bağlantı verdiğim sorun bir npm hatası - prebuildGitHub'dan yükleme yaparken adım çalıştırılmıyor. Örnek olarak, düğüm-akış / düğüm-akışını yüklemeyi deneyin .
Dan Dascalescu

4
Klasörsüz distdepolar GitHub'dan kurulabilir, örneğin: npm install https://github.com/fergiemcdowall/search-index-addermükemmel çalışır.
Fergie

4
Doğru, çünkü doğrudan usabel kaynağınız var /lib(bir dist klasörünüz varmış gibi). Demek istediğim, pakette bir repo'nun GitHub URL'sini eklemenin, bu repoyu yüklemek için çalışacağı garanti edilmiyor. Örneğin, TypeScript ile yazılmış modüllerin aktarılan kodlarını repoya aktarmaları gerekir. Genellikle bunu yapmazlar, ancak .JS kodunu npmjs.com'a yüklenen bir dist klasörüne dökmek için bir prepublish betiği kullanırlar.
Dan Dascalescu

2
Bunun biraz geç olduğunu biliyorum, ama hile aslında npm Git depolarına bire bir eşleme yok. Bazı projeler kaynak dosyalarını yayınlamadan önce yayınlamadan önce oluşturur, yani Git deposunda DEĞİLDİR, ancak npm paketinde olurlar - bunu yapan projeler doğrudan Git'ten çalışmayacaktır. Bunun nasıl başarısız olabileceğinin diğer bir örneği makro depolarıdır - örneğin Babel'in GitHub projesi, alt klasörlerde yüzlerce ayrı npm paketi içerir. Tek tek yayınlanabilirler, çünkü npm doğrudan Git ile eşleşmez. npm dizininizde ne varsa yayınlar.
John Chadwick

13
Daha sonra tökezleyen herkes için ... npm5 itibariyle, npm preparegit deps içeren çıplak "yüklemeler" için herhangi bir komut dosyası çalıştıracaktır . Bu, derleme ve dağıtım klasörleri hakkındaki yukarıdaki yorumların güncel olmadığı anlamına gelir. Derlemelerini düzgün çalışacak şekilde ayarlayan herhangi bir paket, preparederlenmiş varlıkları git'e göndermeden git dep olarak işe yarayacaktır.
jasonkarns


37

Peter Lyons'ın şu anki en önemli yanıtı, yeni NPM sürümleriyle ilgili değil. Örneğin, bu cevapta eleştirilen aynı komutu kullanmak artık iyidir.

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

Sorunları devam ettirdiyseniz, kullandığınız paketle ilgili bir sorun olabilir.


Ayrıca bu komutu kullandığınızda şimdi otomatik olarak github.com/expressjs/express adresine yönlendirir :)
Colin D

33

Yöntemler şimdi npm'in kurulum belgelerinde ve diğer birçok cevapta oldukça iyi bir şekilde ele alınmıştır .

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

Ancak, son zamanlarda değişen önemli bir şey npm preparebetiği değiştirmek için prepublishkomut dosyası eklemek . Bu, git üzerinden yüklenen modüllerin prepublishkomut dosyasını çalıştırmadığı ve dolayısıyla bir modül npm kayıt defterine yayınlandığında oluşan oluşturma adımlarını tamamlamadığı uzun süredir devam eden bir sorunu giderir . Bkz. Https://github.com/npm/npm/issues/3055 .

Tabii ki, modül yazarlarının prepareçalışmaya başlaması için yeni yönergeyi kullanmak için paketlerini güncellemeleri gerekir .


19

GÜNCELLEME şimdi şunları yapabilirsiniz: npm install git://github.com/foo/bar.git
veya içinde package.json:

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

19

Sözdiziminin genel biçimi

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

yani davanız için

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

Npmjs docs sitesinden:

npm yükleme:

Paketi, barındırılan git sağlayıcısından git ile klonlayarak yükler. Tam git uzak URL için yalnızca bu URL denenir.

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

| #semver:] git, git + ssh, git + http, git + https veya git + dosyalarından biridir.

# Belirtilirse, tam olarak bu taahhüdü klonlamak için kullanılır. Taahhüt, #semver: biçimine sahipse, geçerli herhangi bir semver aralığı veya tam sürüm olabilir ve npm, kayıt defteri bağımlılığında olduğu gibi uzak depodaki bu aralıkla eşleşen tüm etiketleri veya başvuruları arar. # Veya

semver: belirtilir, ardından master kullanılır.

Havuz alt modüllerden yararlanırsa, bu alt modüller de klonlanacaktır.

Yüklenen paket bir hazırlık komut dosyası içeriyorsa, bağımlılıkları ve devDependencies yüklenir ve paket paketlenip kurulmadan önce hazırlık komut dosyası çalıştırılır.

Aşağıdaki git ortam değişkenleri npm tarafından tanınır ve git çalıştırıldığında ortama eklenir:

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

Ayrıntılar için git man sayfasına bakınız.

Örnekler:

npm install git+ssh://git@github.com:npm/npm.git#v1.0.27
npm install git+ssh://git@github.com:npm/npm#semver:^5.0
npm install git+https://isaacs@github.com/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://git@github.com:npm/npm.git npm install

14

Doğrudan kurun:

npm install visionmedia/express

Alternatif olarak, dosyanın bölümüne ekleyebilir "express": "github:visionmedia/express"ve ardından şunları çalıştırabilirsiniz:"dependencies"package.json

npm install

9

Ayrıca yapabilirsin

npm i alex-cory/fasthacks

veya

npm i github:alex-cory/fasthacks

Temelde:

npm i user_or_org/repo_name

6

Aşağıdaki npm installgibi komutla doğrudan bir github repo yükleyebilirsiniz : npm install https://github.com/futurechallenger/npm_git_install.git --save

NOT: npm komutu ile kurulacak repoda:

  1. belki bir dağıtımınız olmalı@Dan Dascalescu'nun yorumuna göre, belki de deponuzda klasörünüz .
  2. Kesinlikle bir paket var . hangi eklemek unuttum.

1
Reponuzda bir distklasöre veya herhangi bir derleme koduna ihtiyacınız yoktur . Sadece bir preparekomut dosyası kullanmanız gerekir package.json.
Cameron Tacklind

4

Basit:

npm install *GithubUrl*.git --save

misal :

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

0

denedim npm install git+https://github.com/visionmedia/express ama bu çok uzun sürdü ve işe yarayacağından emin değildim.

Benim için ne işe yaradı - yarn add git+https://github.com/visionmedia/express.


-3

Bu komutu deneyin

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

bu komut benim için çalıştı.

 npm install github:BlessCSS/bless#3.x -g

12
SUDO'yu NPM KURULUMLA KULLANMAYIN! yerine sahibini değiştirmek için chown kullanın.
Marek Fajkus

Sürüm etiket / şube adı mı yoksa package.json sürümü mü?
mfrachet

@MarekFajkus, sudo kullanarak bir paket yöneticisi aracılığıyla Linux'a yüklerseniz ... paketleri global olarak kurmak istiyorsanız root kullanmanız gerekir
Ray Foss

1
@RayFoss Bir yıl gecikti ama ... ancak global olarak kurulmuş paketin tüm kullanıcılar tarafından kullanılabilir olmasını istiyorsanız, nadiren durum budur. Genel paketleri yüklemek için npm'yi yapılandırmanız yeterlidir ~/node_modules, o zaman sudo'ya ihtiyacınız olmaz.
Mr5o1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.