โดยหลักแล้ว webpack เป็นเพียงไฟล์บันเดิล เมื่อพิจารณาถึงสถานการณ์ที่เรียบง่ายมาก (ไม่มีการแยกโค้ด) อาจหมายถึงเพียงการกระทำต่อไปนี้ (ในระดับสูง):
- ค้นหาไฟล์รายการและโหลดเนื้อหาลงในหน่วยความจำ
- จับคู่ข้อความบางอย่างภายในเนื้อหาและประเมินสิ่งเหล่านั้น (เช่น @import)
- ค้นหาการอ้างอิงตามการประเมินก่อนหน้านี้และทำเช่นเดียวกันกับพวกเขา
- เย็บทั้งหมดเป็นมัดในหน่วยความจำ
- เขียนผลลัพธ์ลงในระบบไฟล์
เมื่อคุณตรวจสอบขั้นตอนข้างต้นอย่างละเอียดสิ่งนี้จะสอดคล้องกับสิ่งที่คอมไพเลอร์ Java (หรือคอมไพเลอร์ใด ๆ ) ทำ มีความแตกต่างแน่นอน แต่สิ่งเหล่านี้ไม่สำคัญที่จะต้องเข้าใจตัวโหลดและปลั๊กอิน
รถตัก:
อยู่ที่นี่เนื่องจาก webpack สัญญาว่าจะรวมไฟล์ทุกประเภทเข้าด้วยกัน
เนื่องจาก webpack ที่แกนกลางมีความสามารถเพียงพอที่จะรวมไฟล์ js ได้เท่านั้นคำสัญญานี้หมายความว่าทีมงานหลักของ webpack ต้องรวมขั้นตอนการสร้างซึ่งอนุญาตให้โค้ดภายนอกแปลงไฟล์ประเภทใดประเภทหนึ่งในลักษณะที่ webpack สามารถใช้งานได้
รหัสภายนอกเหล่านี้เรียกว่ารถตักและโดยทั่วไปจะทำงานในขั้นตอนที่ 1 และ 3 ข้างต้น ดังนั้นเนื่องจากขั้นตอนที่รถตักเหล่านี้จำเป็นต้องทำงานนั้นชัดเจนพวกเขาจึงไม่ต้องใช้ตะขอและก็ไม่มีผลต่อกระบวนการสร้าง (เนื่องจากการสร้างหรือบันเดิลจะเกิดขึ้นในขั้นตอนที่ 4 เท่านั้น)
ดังนั้น Loaders จึงเตรียมขั้นตอนสำหรับการคอมไพเลอร์และพวกเขาจัดเรียงเพิ่มความยืดหยุ่นของคอมไพเลอร์ webpack
ปลั๊กอิน:
อยู่ที่นี่เพราะแม้ว่า webpack จะไม่ได้ให้สัญญากับเอาต์พุตตัวแปรโดยตรง แต่โลกก็ต้องการและ webpack ก็อนุญาต
เนื่องจาก webpack ที่แกนหลักเป็นเพียงบันเดิลเลอร์และยังต้องทำตามขั้นตอนและขั้นตอนย่อยอีกหลายขั้นตอนจึงสามารถใช้ขั้นตอนเหล่านี้เพื่อสร้างฟังก์ชันเพิ่มเติมได้
กระบวนการสร้างการผลิต (การย่อขนาดและการเขียนลงในระบบไฟล์) ซึ่งเป็นความสามารถดั้งเดิมของคอมไพเลอร์ webpack เช่นสามารถถือว่าเป็นส่วนเสริมของความสามารถหลัก (ซึ่งเป็นเพียงการรวมกลุ่ม) และสามารถปฏิบัติได้เหมือนปลั๊กอินเนทีฟ หากพวกเขาไม่ได้จัดเตรียมไว้ก็จะมีคนอื่นทำ
เมื่อดูที่ปลั๊กอินเนทีฟด้านบนดูเหมือนว่าการรวมกลุ่มหรือการคอมไพล์ของ webpack สามารถแบ่งย่อยออกเป็นกระบวนการรวมแกนหลักรวมถึงกระบวนการปลั๊กอินเนทีฟมากมายซึ่งเราสามารถปิดหรือปรับแต่งหรือขยายได้ สิ่งนี้หมายถึงการอนุญาตให้โค้ดภายนอกเข้าร่วมในกระบวนการรวมกลุ่มในบางจุดที่สามารถเลือกได้ (เรียกว่า hooks)
ปลั๊กอินจึงมีอิทธิพลต่อเอาต์พุตและประเภทของการขยายความสามารถของคอมไพเลอร์ webpack