Özünde, web paketi sadece bir dosya paketleyicidir. Çok basit bir senaryo düşünüldüğünde (kod bölme yok), bu yalnızca aşağıdaki eylemler anlamına gelebilir (yüksek düzeyde):
- giriş dosyasını bulun ve içeriğini hafızaya yükleyin
- içerikteki belirli bir metni eşleştirin ve bunları değerlendirin (örneğin, @import)
- Önceki değerlendirmeye dayalı bağımlılıkları bulun ve onlarla aynısını yapın
- hepsini bellekte bir demet halinde birleştirin
- sonuçları dosya sistemine yaz
Yukarıdaki adımları yakından incelediğinizde, bu bir Java derleyicisinin (veya herhangi bir derleyicinin) yaptığı şeyle rezonansa girer. Elbette farklılıklar var ama bunların yükleyicileri ve eklentileri anlamak önemli değil.
Yükleyiciler:
burada çünkü webpack herhangi bir dosya türünü bir araya getirmeyi vaat ediyor.
Webpack'in özünde yalnızca js dosyalarını paketlemeye yetecek kadar yetenekli olduğundan, bu vaat, webpack çekirdek ekibinin, harici kodun belirli bir dosya türünü web paketinin kullanabileceği şekilde dönüştürmesine izin veren derleme akışlarını dahil etmesi gerektiği anlamına geliyordu.
Bu harici koda yükleyiciler denir ve genellikle yukarıdaki 1. ve 3. adımlarda çalışırlar. Bu nedenle, bu yükleyicilerin çalışması gereken aşama açık olduğundan, kancalara ihtiyaç duymazlar ve yapım sürecini de etkilemezler (çünkü derleme veya paket yalnızca 4. adımda gerçekleşir).
Böylece, Yükleyiciler derleme aşamasını hazırlar ve web paketi derleyicisinin esnekliğini bir nevi genişletirler.
Eklentiler:
buradalar çünkü webpack değişken çıktıları doğrudan vaat etmese de, dünya bunu istiyor ve webpack buna izin veriyor.
Webpack'in özü yalnızca bir paketleyici olduğundan ve bunu yaparken birkaç adım ve alt adımdan geçtiğinden, bu adımlar ek işlevsellik oluşturmak için kullanılabilir.
Örneğin, web paketi derleyicisinin yerel bir yeteneği olan üretim oluşturma süreci (küçültme ve dosya sistemine yazma), çekirdek kapasitesinin bir uzantısı olarak değerlendirilebilir (bu sadece bir araya getirme) ve yerel bir eklenti gibi değerlendirilebilir. Sağlamamış olsalardı, başkası yapardı.
Yukarıdaki yerel eklentiye bakıldığında, web paketi paketlemesi veya derlemesi, temel paket oluşturma sürecine ve ayrıca kapatabileceğimiz veya özelleştirebileceğimiz veya genişletebileceğimiz birçok yerel eklenti işlemine bölünebilir gibi görünüyor. Bu, harici kodun, seçebilecekleri belirli noktalarda (kancalar olarak adlandırılır) paketleme sürecine katılmasına izin vermek anlamına geliyordu.
Bu nedenle eklentiler çıktıyı etkiler ve web paketi derleyicisinin kapasitesini genişletme biçimini etkiler.