การจัดการเงื่อนไขที่ซ้อนกันของ Vite ในการส่งออกแบบมีเงื่อนไขนั้นคล้ายคลึงกับ Bundlers สมัยใหม่อื่น ๆ เช่น Rollup และ Webpack แต่มีความแตกต่างที่สำคัญบางประการ:
การทำรังและลำดับความจำเพาะ
- VITE: เงื่อนไขสามารถซ้อนกันในฟิลด์ `Exports 'ของ` package.json` ควรระบุจากเฉพาะเจาะจงมากที่สุดถึงน้อยที่สุด Vite จะตรงกับเงื่อนไขแรกที่อยู่ในรายการเงื่อนไขที่อนุญาต [1]
- Rollup: Rollup รองรับเงื่อนไขที่ซ้อนกันในฟิลด์ `Exports` ตามลำดับความจำเพาะเดียวกันกับ Vite [2]
- WebPack: WebPack ยังรองรับเงื่อนไขที่ซ้อนกันในฟิลด์ `Exports` ซึ่งต้องการคำสั่งเฉพาะเช่น Vite และ Rollup [3]
เงื่อนไขที่อนุญาต
- VITE: มีรายการเงื่อนไขที่ได้รับอนุญาตที่กำหนดไว้ล่วงหน้าซึ่งรวมถึง `นำเข้า ',` โมดูล', 'เบราว์เซอร์', 'ค่าเริ่มต้น' และเงื่อนไขเฉพาะสภาพแวดล้อมเช่น 'การผลิต' หรือ 'การพัฒนา' ตัวเลือกการกำหนดค่า `Resolve.conditions 'สามารถเพิ่มได้มากขึ้น [1]
- Rollup: อนุญาตให้ระบุเงื่อนไขที่กำหนดเองผ่านตัวเลือก `Preservemodules` และ` `` `` `preservemodulesroot 'ตัวเลือก [2]
- WebPack: อนุญาตให้กำหนดเงื่อนไขที่กำหนดเองผ่านตัวเลือก `Resolve.ConditionNames` [3]
การจัดการเงื่อนไขที่ไม่ถูกต้อง
- VITE: หากเงื่อนไขไม่ได้จัดโครงสร้างอย่างถูกต้องหรือ VITE เลือกการส่งออกที่ไม่ถูกต้องอาจนำไปสู่ข้อผิดพลาดรันไทม์ การจัดโครงสร้างอย่างระมัดระวังของฟิลด์ `การส่งออก 'เป็นสิ่งสำคัญ [1]
- Rollup: Rollup จะบันทึกคำเตือนหากพบปัญหากับฟิลด์ `Exports` แต่อาจยังคงแก้ไขจุดเริ่มต้น [2]
- WebPack: WebPack จะบันทึกข้อผิดพลาดหากฟิลด์ `Exports` มีรูปแบบผิดปกติหรือหากไม่สามารถแก้ไขจุดเริ่มต้นได้ [3]
การสนับสนุน monorepo
- VITE: ตรวจจับการพึ่งพาที่เชื่อมโยงโดยอัตโนมัติใน monorepo และถือว่าพวกเขาเป็นซอร์สโค้ดวิเคราะห์การพึ่งพาของพวกเขาแทนการรวมพวกเขา [4]
- Rollup: ต้องใช้ปลั๊กอินเช่น `@rollup/plugin-alias` เพื่อจัดการกับการพึ่งพาที่เชื่อมโยงใน monorepo [2]
- Webpack: ต้องใช้ปลั๊กอินเช่น `` enhanced-resolve` เพื่อจัดการกับการพึ่งพาที่เชื่อมโยงใน monorepo [3]
โดยสรุปการจัดการเงื่อนไขที่ซ้อนกันของ Vite นั้นคล้ายคลึงกับ Bundlers คนอื่น ๆ แต่ก็มีข้อได้เปรียบบางอย่างเช่นการสนับสนุน monorepo อัตโนมัติและรายการเงื่อนไขที่ได้รับอนุญาตมากขึ้น อย่างไรก็ตาม Bundlers ทุกคนต้องการการจัดโครงสร้างอย่างระมัดระวังของฟิลด์ `Exports 'เพื่อหลีกเลี่ยงปัญหา
การอ้างอิง:[1] https://v2.vitejs.dev/config/
[2] https://vitejs.dev/guide/features
[3] https://vitejs.dev/guide/dep-prebundling
[4] https://vitejs.dev/guide/build
[5] https://vitejs.dev/config/shared-options