Về cốt lõi, webpack chỉ là một trình gói tập tin. Xem xét một kịch bản rất đơn giản (không tách mã), điều này có thể chỉ có nghĩa là các hành động sau (ở cấp độ cao):
- tìm tệp mục nhập và tải nội dung của nó vào bộ nhớ
- đối sánh văn bản nhất định trong nội dung và đánh giá chúng (ví dụ: @import)
- tìm các phụ thuộc dựa trên đánh giá trước đó và làm tương tự với chúng
- ghép tất cả chúng thành một gói trong bộ nhớ
- ghi kết quả vào hệ thống tệp
Khi bạn kiểm tra các bước trên chặt chẽ, điều này phù hợp với những gì một trình biên dịch Java (hoặc bất kỳ trình biên dịch nào) thực hiện. Tất nhiên có sự khác biệt nhưng chúng không quan trọng để hiểu bộ tải và plugin.
Máy xúc lật:
ở đây vì webpack hứa hẹn sẽ kết hợp mọi loại tệp lại với nhau.
Vì webpack ở lõi của nó chỉ đủ khả năng để gói các tệp js, lời hứa này có nghĩa là nhóm cốt lõi của webpack phải kết hợp các luồng xây dựng cho phép mã bên ngoài chuyển đổi một loại tệp cụ thể theo cách mà webpack có thể sử dụng.
Các mã bên ngoài này được gọi là bộ tải và chúng thường chạy trong bước 1 và 3 ở trên. Do đó, vì giai đoạn mà các trình tải này cần chạy là hiển nhiên, chúng không yêu cầu hook và cũng không ảnh hưởng đến quá trình xây dựng (vì quá trình xây dựng hoặc gói chỉ xảy ra ở bước 4).
Vì vậy, Loaders chuẩn bị giai đoạn biên dịch và chúng mở rộng tính linh hoạt của trình biên dịch webpack.
Bổ sung:
ở đây vì mặc dù webpack không trực tiếp hứa hẹn đầu ra có thể thay đổi, thế giới muốn nó và webpack cho phép điều đó.
Vì webpack ở cốt lõi của nó chỉ là một gói và phải trải qua một số bước và các bước phụ để làm như vậy, các bước này có thể được sử dụng để xây dựng thêm chức năng.
Ví dụ: quy trình xây dựng sản xuất (thu nhỏ và ghi vào hệ thống tệp), là một khả năng gốc của trình biên dịch webpack, chẳng hạn, có thể được coi như một phần mở rộng của khả năng cốt lõi của nó (chỉ là gói) và có thể được coi như một plugin gốc. Nếu họ không cung cấp nó, người khác sẽ làm điều đó.
Nhìn vào plugin gốc ở trên, có vẻ như gói hoặc biên dịch webpack có thể được chia nhỏ thành quy trình đóng gói cốt lõi, cộng với rất nhiều quy trình plugin gốc mà chúng ta có thể tắt hoặc tùy chỉnh hoặc mở rộng. Điều này có nghĩa là cho phép mã bên ngoài tham gia vào quá trình đóng gói tại các điểm cụ thể mà chúng có thể chọn (được gọi là hook).
Do đó, các plugin ảnh hưởng đến đầu ra và mở rộng khả năng của trình biên dịch webpack.