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 npxyardımcı program npm 5.2bu 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 eslintistiyorsanız şunları yapabilirsiniz:
npx eslint .
scriptPackage.json paketinizin bir alanında kullanıldığında , aracı ve genel olarak yüklenmiş modülleri npmarar 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 testglobal 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ü sudogerekli 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.
gulpve coffeebö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.
gulpbana 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.jsgulp
Temel olarak, gulpyerel olarak yüklediğinizde komut dosyası içinde değildir PATHve bu nedenle gulpkabuğun komutu bulmasını ve yazmasını bekleyemezsiniz. Global dizin yüklediğinizde, gulpkomut 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 gulpolarak kurulu sürümünüzü kullanacak gulpfile.js.
gulppaketinizin node_modules/.bin/gulpyola 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 gulpolarak 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 --globalkomut--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_modulesolarak, yerel kurulumunuzdaki klasör sizin içindeyse global olarak kurmanıza gerek yoktur PATH. Genellikle bu iyi bir fikir değildir.
Alternatif olarak npm testreferanslar gulpvarsa,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.