Package.json'da git URL'sini kullanarak bir şubeye veya etikete bağlı mısınız?


399

Diyelim ki bir hata modülüne sahip bir düğüm modülü çatalladım ve bugfix birleştirilip serbest bırakılana kadar sabit sürümümü elbette bir özellik dalında kullanmak istiyorum.

Nasıl benim sabit versiyonunu başvurmak dependenciesSesimin package.json?

Yanıtlar:


569

Gönderen npm docs :

git://github.com/<user>/<project>.git#<branch>

git://github.com/<user>/<project>.git#feature\/<branch>

NPM sürüm 1.1.65'ten itibaren şunları yapabilirsiniz:

<user>/<project>#<branch>

130
Npm 1.1.65 itibariyle, Github URL'si daha kısa olabilir user/project. npmjs.org/doc/files/package.json.html Şubeyi şu şekilde ekleyebilirsinizuser/project#branch
dantheta

2
git://github.com/<user>/<project>.git#feature/blahişe yaradı ama <user>/<project>.git#feature/blaholmadı ... belki de regex'lerinin dikkate alınması için daha gelişmiş olması gerekir feature/blah. Bu npm olduv1.4.28
pulkitsinghal

5
Sürüm numarasını nasıl eklersiniz?
Richard

1
@hurrymaplelad çekme talebi için de aynısını yapabilir miyim? Öyleyse, komut nasıl?
roundrobin

3
Güncellenmiş NPM dokümanları docs.npmjs.com/files/package.json#github-urls
kellen

136

@ dantheta'nın yorumu başına:

Npm 1.1.65 itibariyle, Github URL'si daha kısa kullanıcı / proje olabilir. npmjs.org/doc/files/package.json.html Şubeyi kullanıcı / proje # dalı gibi ekleyebilirsiniz

Yani

"babel-eslint": "babel/babel-eslint",

Veya jscs'deki v1.12.0 etiketi için:

"jscs": "jscs-dev/node-jscs#v1.12.0",

Not: npm --save kullanırsanız, daha uzun git

Gönderen https://docs.npmjs.com/files/package.json#git-urls-as-dependencies

Bağımlılık Olarak URL'leri Git

Git URL'leri şu biçimde olabilir:

git: //github.com/user/project.git#commit-ish git + ssh: // kullanıcı @ hostname: project.git # commit-ish git + ssh: //user@hostname/project.git#commit- ish git + http: //user@hostname/project/blah.git#commit-ish git + https: //user@hostname/project/blah.git#commit-ish

Taahhüt, git çıkışına argüman olarak verilebilen herhangi bir etiket, sha veya şube olabilir. Varsayılan master'dır.

GitHub URL'leri

1.1.65 sürümünden itibaren GitHub URL'lerine yalnızca "foo": "user / foo-project" olarak başvurabilirsiniz. Git URL'lerinde olduğu gibi, bir taahhüt-son eki eklenebilir. Örneğin:

{"name": "foo",
"version": "0.0.0",
"bağımlılıklar": {"express": "visionmedia / express", "mocha": "visionmedia / mocha # 4727d357ea"}}


2
Bir kesinliğe bağlı olarak, özellikle kontrolünüz altında olmayan bir repoya bağlıysanız, sha1 tercih edilen seçenek olmalıdır. Git dalları ve etiketleri değiştirilemez (silinebilir / değiştirilebilir, kötü amaçlı / kazayla), bir sha1 çarpışması oluşturmak neredeyse imkansızdır.
jakub.g

1
bir şubem ve taahhüt taahhüdü alabilir miyim?
munchschair

45

Eğer kullanım istiyorsanız develveya featureşube veya NPM kayıt defterine belli paketi yayınlamadıysanız ya da özel modül var, çünkü o zaman bir işaret edebilir olamaz git://Gözlerinde farklı bir versiyon numarası yerine URI package.json:

"dependencies": {
   "public": "git://github.com/user/repo.git#ref",
   "private": "git+ssh://git@github.com:user/repo.git#ref"
}

Bölüm #refisteğe bağlıdır ve bir dal (gibi master), etiket (gibi 0.0.1) veya kısmi veya tam taahhüt kimliği olabilir.


26

NPM'nin son sürümünde şunları yapabilirsiniz:

npm install gitAuthor/gitRepo#tag

Repo geçerli bir NPM paketiyse, package.json içinde şu şekilde otomatik olarak yumuşatılır:

{ "NPMPackageName": "gitAuthor/gitRepo#tag" }

Eğer bunu @justingordon'un cevabına ekleyebilseydiniz, şimdi manuel takma işlemlere gerek yok!


4
değil, değil. Yanlış takılıyor. Her nasılsa, depodaki tüm dizin yapısını içermez, sadece package.json, yarn.lock, benioku ve lisans gibi bazı dosyaları içerir. Src veya dist klasörü yok.
StalkAlex

@StalkAlex docs.npmjs.com/cli/publish ve ardından yapı komut dosyaları için yüklediğiniz repoyu kontrol edin. Belki etiketlenirler veya yükleme sonrası sizin için işe yaramaz, bu özel paket için bir sorun zaten umarım bu yardımcı olur!
girdap

@vortex teşekkürler, etiketleme ile tam olarak ne demek istiyorsun? Bu nasıl bir problem yaratıyor?
StalkAlex

0

Herkese yardımcı olursa, yukarıdaki her şeyi denedim (jeton modu w / https) - ve hala hiçbir şey çalışmıyor. Hiçbir hatam yok, ancak node_modules veya package_lock.json içine hiçbir şey yüklenmez. Simgeyi veya repo adında veya kullanıcı adında vb. Herhangi bir harfi değiştirirsem - Bir hata alırım. Bu yüzden doğru jeton ve repo ismine sahip olduğumu biliyordum.

Sonunda bunun paketimdeki bağımlılığın isminin, paketin içindeki adla eşleşmediği için fark ettim. Npm install --verbose bile herhangi bir sorun olduğunu söylemez. Sadece hata olmadan bağımlılık göz ardı gibi görünüyor.

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.