'bağımlılıkları arasındaki fark ne etmesinin önünü paketinde devDependencies ve peerDependencies.dosya json?
This documentation çok kötü bir cevap. Bu açıklamalar anlamadım. Birisi basit bir deyişle diyebilir mi? Eğer sabit basit kelimeleri seçmek için örnekler olabilir mi?
EDİTayrıca ekledi yakından ilişkilidir ve karışıklığa neden olabilir peerDependencies
,.
CEVAP
Önemli davranış farklılıkları özeti:
dependencies
üzerinde yüklüpackage.json
içeren bir dizindennpm install
- Başka bir dizinde
npm install $package
*55:*
- ayrıca
--production
bayrak geçmedenpackage.json
içeren bir dizindenpm install
yüklü (Gayan Charith's answer upvote) - yüklü değil
--dev
seçeneği vermedikçe 15 ** başka bir dizin.
- ayrıca
-
- hep eksik eğer yüklü ise ve bağımlılık birden çok uyumsuz sürümleri farklı bağımlılıkları tarafından kullanılacaktır eğer bir hata yükseltmek. 3.0 önce:
- expected starting on 3.0 () denenmemiş:
npm install
, eksik ve bağımlılık kendini çözmek için el ile yapmanız gerekir. Eğer bir uyarı ver Çalışırken, eğer bağımlılık yoksa, bir hata alıyorum (@nextgentech ile belirtilen)
Ayrıca şu soru üzerinde tartışılan bundledDependencies
var: Advantages of bundledDependencies over normal dependencies in NPM
devDependencies
dependencies
, devDependencies
sadece geliştirmek için çalıştırmak için gereklidir, örneğin: ünite testleri, transpilation Javascript Coffeescript, minification, ...
Eğer bir paket geliştirmek için gidiyoruz eğer, ** 23 ve çalıştırın içeren (git clone
ile örneğin) indir, kökünden gidin:
npm install
Beri var asıl kaynağı, temiz istediğin için geliştirmek, böylece varsayılan olarak, her iki dependencies
(bu yana da ders çalıştırmak için geliştirmek) ve devDependency
bağımlılıklar da yüklü.
Ancak sadece kullanmak için bir paket yüklemek isteyen bir son kullanıcı iseniz, herhangi bir dizinden yapacaksın:
npm install "$package"
Sadece paketi kullanmak için gerekli olduğunu, bu yüzden bu durumda, normal gelişim bağımlılıklar istemiyorum,: dependencies
.
Eğer gerçekten bu durumda geliştirme paketlerini yüklemek istiyorsanız, true
komut satırı olarak, muhtemelen dev
yapılandırma seçeneği ayarlayabilirsiniz:
npm install "$package" --dev
Seçenek bu kadar az görülen bir durum olduğu için varsayılan olarak false
.
peerDependencies
(3.0 daha önce denenmiş)
Kaynak: http://blog.nodejs.org/2013/02/07/peer-dependencies/
Düzenli bağımlılıklar, bağımlılık birden çok sürümü olabilir: bu sadece bağımlılık node_modules
içinde yüklü.
E. g. dependency1
dependency2
iki farklı versiyonu dependency3
bağlı eğer proje ağacı gibi görünecektir:
root/node_modules/
|
- dependency1/node_modules/
| |
| - dependency3 v1.0/
|
|
- dependency2/node_modules/
|
- dependency3 v2.0/
Eklentileri ancak normal olarak adlandırılan diğer paketi, gerekmeyen paketleranabu bağlamda. Bunun yerine:
- eklentileri gereklidirev sahibi tarafından
- plugins host bulmak için bekliyor standart bir arayüz sunar
- yalnızca ana bilgisayar, tek bir sürüm olmalı yani doğrudan kullanıcı tarafından çağrılır.
E. g. dependency1
dependency2
eş dependency3
proje ağaca bağlı gibi görünecektir:
root/node_modules/
|
- dependency1/
|
- dependency2/
|
- dependency3 v1.0/
Bu asla package.json
dosyasında dependency3
söz olsa olur.
Bu Inversion of Control tasarım deseni bir örnek olduğunu düşünüyorum.
Eş bağımlılıkları prototip bir örnek, Homurtu, ana ve eklentileri.
https://github.com/gruntjs/grunt-contrib-uglify, Homurtu gibi bir eklenti örneğin, göreceksiniz:
grunt
peerDependency
tests/
altındarequire('grunt')
tek: aslında program tarafından kullanılmıyor.
Sonra, ne zaman kullanıcı kullanacak bir eklenti olacak örtülü olarak gerekli eklenti Gruntfile
ekleme grunt.loadNpmTasks('grunt-contrib-uglify')
çizgi, ama grunt
kullanıcı ara direk.
Bu ise her eklenti farklı bir Homurtu bir sürümü gerekiyorsa, o zaman işe yaramaz.
Manuel
Doktor oldukça iyi sorunu cevaplar sanırım, belki de düğüm / diğer paket yöneticileri ile sadece tanıdık yeterli değildir. Ben büyük ihtimalle sadece Yakut toplayıcı hakkında biraz biliyorum, çünkü onu anlıyorum.
Anahtar hattı
Bunları etmesinin önünü yapıyor ya da bir paket kök bağlantı etmesinin önünü yükleyin ve başka etmesinin önünü yapılandırma param gibi yönetilebilir ne zaman yüklenecek. Bakın etmesinin önünü-config(7) bu konu hakkında daha fazla için.
Ve sonra etmesinin önünü-config(7) altında dev
bul:
Default: false
Type: Boolean
Install dev-dependencies along with packages.
Bower ve etmesinin önünü arasındaki fa...
Homurtu arasında fark etmesinin önünü ...
Paketi nasıl kurarım.json geçerli dizi...
Paket tilde(~) ve şapka arasındaki far...
etmesinin önünü paketi UYAR.json: depo...