CommonsChunkPlugin
Tüm giriş noktalarına bakmanın, aralarında ortak paketler / bağımlılıklar olup olmadığını kontrol edip bunları kendi paketlerine ayırdığına dair genel bir fikir anlıyorum.
Öyleyse, aşağıdaki yapılandırmaya sahip olduğumu varsayalım:
...
enrty : {
entry1 : 'entry1.js', //which has 'jquery' as a dependency
entry2 : 'entry2.js', //which has 'jquery as a dependency
vendors : [
'jquery',
'some_jquery_plugin' //which has 'jquery' as a dependency
]
},
output: {
path: PATHS.build,
filename: '[name].bundle.js'
}
...
Kullanmadan paketlersem CommonsChunkPlugin
Sonunda 3 yeni paket dosyası elde edeceğim:
entry1.bundle.js
hangi komple kodu içerenentry1.js
vejquery
kendi çalışma zamanını içerenentry2.bundle.js
hangi komple kodu içerenentry2.js
vejquery
kendi çalışma zamanını içerenvendors.bundle.js
hangi komple kodu içerenjquery
vesome_jquery_plugin
kendi çalışma zamanını içeren
Bu açıkça kötü çünkü jquery
sayfada potansiyel olarak 3 kez yükleyeceğim , bu yüzden bunu istemiyoruz.
Kullanarak paketlersem CommonsChunkPlugin
CommonsChunkPlugin
Aşağıdakilerden herhangi birine aktardığım argümanlara bağlı olarak :
DURUM 1: Ben geçerseniz
{ name : 'commons' }
aşağıdaki paket dosyaları ile sona erecek:entry1.bundle.js
tam kodu içeren, çalışma zamanıentry1.js
için bir gereksinim olanjquery
ve içermeyenentry2.bundle.js
tam kodu içeren, çalışma zamanıentry2.js
için bir gereksinim olanjquery
ve içermeyenvendors.bundle.js
tam kodu içeren, çalışma zamanısome_jquery_plugin
için bir gereksinim olanjquery
ve içermeyencommons.bundle.js
tam kodujquery
içeren ve çalışma zamanını içeren
Bu şekilde, genel olarak bazı daha küçük paketler elde ederiz ve çalışma zamanı
commons
pakette yer alır. Oldukça iyi ama ideal değil.DURUM 2: Ben geçerseniz
{ name : 'vendors' }
aşağıdaki paket dosyaları ile sona erecek:entry1.bundle.js
tam kodu içeren, çalışma zamanıentry1.js
için bir gereksinim olanjquery
ve içermeyenentry2.bundle.js
tam kodu içeren, çalışma zamanıentry2.js
için bir gereksinim olanjquery
ve içermeyenvendors.bundle.js
çalışma zamanından gelenjquery
ve içeren tam kodusome_jquery_plugin
içeren.
Bu şekilde, yine genel olarak bazı daha küçük paketlerle sonuçlanırız, ancak çalışma zamanı artık
vendors
pakette yer almaktadır. Önceki durumdan biraz daha kötü çünkü çalışma zamanı artıkvendors
pakette.DURUM 3: Ben geçerseniz
{ names : ['vendors', 'manifest'] }
aşağıdaki paket dosyaları ile sona erecek:entry1.bundle.js
tam kodu içeren, çalışma zamanıentry1.js
için bir gereksinim olanjquery
ve içermeyenentry2.bundle.js
tam kodu içeren, çalışma zamanıentry2.js
için bir gereksinim olanjquery
ve içermeyenvendors.bundle.js
hangi komple kodu içerenjquery
vesome_jquery_plugin
ve çalışma zamanını içermiyormanifest.bundle.js
diğer tüm paketler için gereksinimleri ve çalışma zamanını içeren
Bu şekilde, genel olarak bazı daha küçük paketler elde ederiz ve çalışma zamanı
manifest
pakette yer alır. Bu ideal durumdur.
Ne anlamıyorum / anladığımdan emin değilim
In HALİNDE 2 neden olan düştün
vendors
hem ortak kod (içeren paketjquery
kalma neyse) vevendors
girişe (some_jquery_plugin
)? Anladığım kadarıyla,CommonsChunkPlugin
burada yaptığı şey, ortak kodu (jquery
)vendors
toplamasıydı ve onu pakete çıkarmaya zorladığımızdan, ortak kodu pakete bir tür "birleştirdi"vendors
(şimdi yalnızcasome_jquery_plugin
). Lütfen onaylayın veya açıklayın.In HALİNDE 3 Bence geçti ne oldu anlamıyorum
{ names : ['vendors', 'manifest'] }
eklentisi için.vendors
Paket neden / nasıl bozulmadan tutuldu, her ikisini de içeriyorjquery
vesome_jquery_plugin
ne zamanjquery
açıkça ortak bir bağımlılıktır ve oluşturulanmanifest.bundle.js
dosya neden oluşturulduğu şekilde oluşturuldu (diğer tüm paketleri gerektiriyor ve çalışma zamanını içeriyor)?