Gulp ile ilgili 2 kılavuz , gulp'i önce küresel olarak (-g bayrağıyla) ve daha sonra yerel olarak bir kez daha yüklemem gerektiğini söylüyor. Neden buna ihtiyacım var?
Gulp ile ilgili 2 kılavuz , gulp'i önce küresel olarak (-g bayrağıyla) ve daha sonra yerel olarak bir kez daha yüklemem gerektiğini söylüyor. Neden buna ihtiyacım var?
Yanıtlar:
Bir aracı global olarak kurarken, kullanıcı tarafından düğüm projeleri dışında herhangi bir yerde komut satırı yardımcı programı olarak kullanılır. Bir düğüm projesi için genel yüklemeler kötü çünkü dağıtımı daha zor hale getiriyorlar.
Birlikte gelen npx
yardımcı program npm
5.2
bu sorunu çözer. Bununla beraber, küresel olarak kurulmuş yardımcı programlar gibi yerel olarak yüklenmiş yardımcı programları çağırabilirsiniz (ancak komutu ile başlamalısınız npx
). Örneğin, yerel olarak yüklenen bir dosyayı çağırmak eslint
istiyorsanız şunları yapabilirsiniz:
npx eslint .
script
Package.json paketinizin bir alanında kullanıldığında , aracı ve genel olarak yüklenmiş modülleri npm
arar node_modules
, bu nedenle yerel kurulum yeterlidir.
Yani, eğer memnunsanız (paketinizde.json):
"devDependencies": {
"gulp": "3.5.2"
}
"scripts": {
"test": "gulp test"
}
vb. ile çalışarak npm run test
global yüklemeye hiç ihtiyacınız olmamalıdır.
Her iki yöntem de insanlara projenizle başa çıkmak için yararlıdır çünkü sudo
gerekli değildir. Ayrıca gulp
, sürüm paketin içine girdiğinde güncelleneceği anlamına gelir . Json, bu nedenle herkes projenizle geliştirirken aynı gulp sürümünü kullanacaktır.
Görünüşe göre yudum küresel olarak kullanıldığında alışılmadık bir davranış sergiliyor. Global kurulum olarak kullanıldığında gulp, kontrolü geçmek için yerel olarak kurulmuş bir gulp arar. Bu nedenle, küresel bir kurulumun çalışması için yerel bir kurulum gerektirir. Yukarıdaki cevap yine de duruyor. Yerel yüklemeler her zaman genel yüklemelere tercih edilir.
./node_modules/.bin/gulp
.
gulp
ve coffee
böylece komutları düğüm proje kök (örn. alias gulp="node_modules/.bin/gulp"
) Çalışır . Bu şekilde gerektiğinde komutların kullanımı kolaydır ve genel / yerel sürüm çakışmaları meydana gelmez.
gulp
bana aşağıdaki hata mesajını veriyor Local gulp not found in ...
. Anladığım kadarıyla, önce yerel node_modules'e bakmalı ve eğer bulunamazsa, küresel olarak kurulmuş modüllere bakmalı, değil mi? Teşekkürler!
TLDR; İşte nedeni :
Bunun nedeni , yerel olarak kurulu sürümünüzü kullanarak
gulp
çalıştırmayı denemesidir , buraya bakın . Bu nedenle küresel ve yerel bir yudum yerleştirmenin nedeni.gulpfile.js
gulp
Temel olarak, gulp
yerel olarak yüklediğinizde komut dosyası içinde değildir PATH
ve bu nedenle gulp
kabuğun komutu bulmasını ve yazmasını bekleyemezsiniz. Global dizin yüklediğinizde, gulp
komut dosyası içine girer PATH
çünkü global node/bin/
dizin büyük olasılıkla yolunuzdadır.
Yerel bağımlılıklarınıza saygı göstermek için, yerel gulp
olarak kurulu sürümünüzü kullanacak gulpfile.js
.
gulp
paketinizin node_modules/.bin/gulp
yola koyulması için gerekli olduğunu söyledi . Depolama ucuz ama bir symlink simüle için MB atmak IMO saf özensizlik olduğunu.
Global gulp
olarak yerel olarak kurulmuş olan
npm link gulp
npm link
.
" Neden küresel ve yerel olarak yudum takmamız gerekiyor? " Sorusu aşağıdaki iki soruya ayrılabilir:
Global olarak daha önce kurduysam neden gulp'i yerel olarak kurmam gerekiyor?
Yerel olarak daha önce kurduysam neden gulp'i global olarak kurmam gerekiyor?
Bazıları bu sorulara ayrı olarak mükemmel cevaplar verdiler, ancak bilgileri birleşik bir cevapta birleştirmenin yararlı olacağını düşündüm.
Global olarak daha önce kurduysam neden gulp'i yerel olarak kurmam gerekiyor?
Yudumu yerel olarak kurmanın mantığı birkaç nedenden oluşur:
Yerel olarak daha önce kurduysam neden gulp'i global olarak kurmam gerekiyor?
Yerel olarak yüklemekten kaçınmak için kullanabilirsiniz npm link [package]
, ancak bağlantı komutunun yanı sıra install --global
komut--save-dev
seçeneği seçeneği bu da gulp'ı küresel olarak yüklemenin kolay bir yolu olmadığı ve ardından hangi sürümü kolayca ekleyeceği anlamına geliyor. yerel package.json dosyanız.
Sonuçta, tüm projelerinizde ortak araçların kurulumunu çoğaltmaktan kaçınmak için küresel modülleri kullanma seçeneğine sahip olmanın daha mantıklı olduğuna inanıyorum, özellikle de grunt, gulp, jshint, vb. Tahıllara karşı gittiğinizde aletlerle savaştığınız anlaşılıyor.
Teknik node_modules
olarak, yerel kurulumunuzdaki klasör sizin içindeyse global olarak kurmanıza gerek yoktur PATH
. Genellikle bu iyi bir fikir değildir.
Alternatif olarak npm test
referanslar gulp
varsa,npm test
ve yerel yudumu çalıştıracaktır.
Dünyada hiç yudum takmadım - bence bu kötü bir form.
Sorunumuzun sadece yerel olarak gulp kurulumu ile ilgili olup olmadığından emin değilim. Ancak kendimize bir grup bağımlılık kurmamız gerekiyordu. Bu bir "büyük" package.json yol açar ve gulp sadece yerel olarak yüklemek için gerçekten harika bir fikir olup olmadığından emin değiliz. Yapım ortamımız nedeniyle bunu yapmak zorundaydık. Ama kesinlikle gerekli değilse, yutmayı küresel olarak yüklememenizi tavsiye etmem. Aşağıdaki blog yazısında açıklanan benzer sorunlarla karşılaştık
Bu sorunların hiçbiri, geliştiricilerimizden herhangi biri için yerel makinelerinde ortaya çıkmaz, çünkü hepsi küresel olarak yıpranır. Yapım sisteminde tarif edilen problemler vardı. Birisi ilgilenirse bu konuya daha derinlemesine dalabilirdim. Ama şu anda sadece yerel olarak yudum takmanın kolay bir yolu olmadığını belirtmek istedim.
Sadece burada görmediğim için, MacOS veya Linux'taysanız, bunu PATH'nize (bashrc'nizde vb.) Eklemenizi öneririm:
node_modules/.bin
Bu göreli yol girdisiyle, herhangi bir düğüm projesinin kök klasöründe oturuyorsanız, "genel yüklemeler" vb. Konusunda endişelenmeden herhangi bir komut satırı aracını (eslint, gulp vb.) Çalıştırabilirsiniz npm run
.
Bunu yaptığımda, hiçbir zaman global olarak bir modül kurmadım.