Zasadniczo webpack jest tylko pakietem plików. Biorąc pod uwagę bardzo prosty scenariusz (bez dzielenia kodu), może to oznaczać tylko następujące działania (na wysokim poziomie):
- znajdź plik wejściowy i załaduj jego zawartość do pamięci
- dopasuj określony tekst w treści i oceń go (np. @import)
- znajdź zależności na podstawie wcześniejszej oceny i zrób z nimi to samo
- zszyć je wszystkie w paczkę w pamięci
- zapisz wyniki do systemu plików
Dokładne zbadanie powyższych kroków odzwierciedla to, co robi kompilator Java (lub dowolny kompilator). Oczywiście istnieją różnice, ale nie mają one znaczenia dla zrozumienia programów ładujących i wtyczek.
Ładowarki:
są tutaj, ponieważ pakiet webpack obiecuje zebrać razem dowolny typ pliku.
Ponieważ pakiet webpack w swej istocie jest w stanie tylko spakować pliki js, ta obietnica oznaczała, że zespół rdzenia webpacka musiał uwzględnić przepływy kompilacji, które pozwoliły zewnętrznemu kodowi na przekształcenie określonego typu pliku w sposób, który może wykorzystać pakiet internetowy.
Te zewnętrzne kody są nazywane programami ładującymi i zazwyczaj są uruchamiane w kroku 1 i 3 powyżej. Tak więc, ponieważ etap, na którym te programy ładujące muszą działać, jest oczywisty, nie wymagają one haków ani nie wpływają na proces kompilacji (ponieważ kompilacja lub pakiet ma miejsce tylko w kroku 4).
Tak więc programy ładujące przygotowują scenę do kompilacji iw pewnym sensie zwiększają elastyczność kompilatora webpacka.
Wtyczki:
są tutaj, ponieważ chociaż webpack nie obiecuje bezpośrednio zmiennych danych wyjściowych, świat tego chce, a webpack na to pozwala.
Ponieważ pakiet webpack w swej istocie jest tylko pakietem, a mimo to przechodzi przez kilka kroków i podetapów, kroki te można wykorzystać do zbudowania dodatkowej funkcjonalności.
Proces budowania produkcji (minifikacja i zapis do systemu plików), który jest natywną zdolnością kompilatora webpack, na przykład, może być traktowany jako rozszerzenie jego podstawowych możliwości (czyli po prostu bundlingu) i może być traktowany jak natywna wtyczka. Gdyby tego nie zrobili, zrobiłby to ktoś inny.
Patrząc na natywną wtyczkę powyżej, wygląda na to, że pakietowanie lub kompilację pakietu internetowego można podzielić na podstawowy proces tworzenia pakietów, a także wiele natywnych procesów wtyczek, które możemy wyłączyć, dostosować lub rozszerzyć. Oznaczało to zezwolenie zewnętrznemu kodowi na dołączenie do procesu tworzenia pakietów w określonych punktach, z których mogą wybierać (zwanymi punktami zaczepienia).
Wtyczki zatem wpływają na wyjście i w pewnym sensie rozszerzają możliwości kompilatora webpack.