Dark mode
Dependency Pre-Bundling in Vite
What is Dependency Pre-Bundling?
Dependency Pre-Bundling is a core optimization technique in Vite that converts and bundles dependencies into ESM (ECMAScript Modules) format before development starts. This process significantly improves application loading performance and development experience.
Why Pre-Bundle Dependencies?
- ESM Conversion: Transforms CommonJS/UMD modules into ESM format
- Performance Optimization: Reduces the number of HTTP requests during development
- Caching Efficiency: Improves cache utilization for faster rebuilds
- Consistency: Ensures consistent module resolution across the application
How Pre-Bundling Works
Vite automatically performs pre-bundling when:
- Starting the dev server for the first time
- Detecting changes in
package.json
dependencies - Modifying
vite.config.ts
settings related to dependencies
The pre-bundled files are stored in node_modules/.vite
and are cached for subsequent runs.
การทํางานของ Pre-bundling
Vite จะทําการ pre-bundle dependencies โดยอัตโนมัติเมื่อ:
- เริ่มต้น dev server ครั้งแรก
- มีการเปลี่ยนแปลงใน dependencies ใน package.json
- มีการเปลี่ยนแปลง vite.config.js ที่เกี่ยวข้องกับ dependencies
การกําหนดค่า Pre-bundling
ts
// vite.config.ts
export default defineConfig({
optimizeDeps: {
// Force pre-bundling for specific packages
include: ["lodash-es", "vue", "axios"],
// Exclude packages from pre-bundling
exclude: ["your-package"],
// Additional entry points for dependency discovery
entries: ["./src/**/*.ts"],
// Advanced configuration
esbuildOptions: {
// Customize esbuild options
target: "es2020",
plugins: [],
},
},
});
ข้อควรระวัง
- packages บางตัวอาจต้องระบุใน
include
เพื่อให้ทํางานได้ถูกต้อง- การ pre-bundle อาจใช้เวลานานในครั้งแรก แต่จะถูก cache ไว้
- หากมีปัญหา สามารถลบ cache ได้ที่
node_modules/.vite
ตัวอย่างการใช้งาน
ts
// vite.config.ts
export default defineConfig({
optimizeDeps: {
include: [
"vue",
"axios",
"@vueuse/core",
"lodash-es/get",
"lodash-es/set",
// Add other frequently used dependencies
],
},
});
การ Debug Pre-bundling
เมื่อต้องการตรวจสอบว่า dependencies ใดถูก pre-bundle:
- ดูที่ Terminal output เมื่อเริ่ม dev server
- ตรวจสอบไฟล์ใน
node_modules/.vite
- ใช้ flag
--debug
เมื่อรัน dev server
Troubleshooting
- Cache Issues: Delete
node_modules/.vite
and restart dev server - Missing Dependencies: Ensure all required packages are in
package.json
- TypeScript Errors: Verify type definitions are properly installed
- Performance Problems: Use
--profile
flag to analyze build performance
Advanced Topics
- Customizing esbuild options
- Handling peer dependencies
- Optimizing large dependency trees
- Integrating with monorepo setups