Dark mode
Vite Dependency Optimization API
Vite มีระบบ Dependency Optimization ที่ช่วยให้การโหลด dependencies เร็วขึ้นโดยการประมวลผลล่วงหน้า (pre-bundling) ในส่วนนี้เราจะมาดูวิธีการกำหนดค่าต่างๆ สำหรับการ optimize dependencies
optimizeDeps.entries
กำหนดจุดเข้า (entry points) สำหรับสแกน dependencies ช่วยให้ Vite วิเคราะห์ dependencies ได้แม่นยำยิ่งขึ้น
ts
import { defineConfig } from "vite";
export default defineConfig({
optimizeDeps: {
// ระบุ path ไปยังไฟล์ entry points
entries: [
"./src/main.ts",
"./src/another-entry.ts",
// ระบุ glob pattern ได้
"**/*.page.vue",
],
},
});
js
export default {
optimizeDeps: {
entries: [
"./src/main.js",
"./src/another-entry.js",
"**/*.page.vue",
],
},
};
optimizeDeps.exclude
ระบุ dependencies ที่จะไม่ถูก optimize ใช้เมื่อต้องการยกเว้น packages ที่ไม่จำเป็นต้อง optimize
ts
import { defineConfig } from "vite";
export default defineConfig({
optimizeDeps: {
// ระบุชื่อ package ที่ไม่ต้องการให้ optimize
exclude: [
"package-to-exclude",
"@scope/package-name",
// ระบุ subpath ได้
"package-with-css/dist/style.css",
],
},
});
optimizeDeps.include
บังคับให้ optimize dependencies ที่ระบุ ใช้เมื่อ Vite ไม่สามารถตรวจจับ dependencies ได้อัตโนมัติ
ts
import { defineConfig } from "vite";
export default defineConfig({
optimizeDeps: {
include: [
// ระบุชื่อ package ที่ต้องการ optimize
"lodash",
// ระบุ subpath ได้
"my-package/dist/utils",
// ระบุ module ที่ไม่ใช่ JavaScript
"my-package/dist/style.css",
],
},
});
optimizeDeps.esbuildOptions
กำหนดค่าสำหรับ esbuild ที่ใช้ optimize ช่วยปรับแต่งกระบวนการ optimization ให้เหมาะสม
ts
import { defineConfig } from "vite";
export default defineConfig({
optimizeDeps: {
esbuildOptions: {
// ระบุ target JavaScript version
target: "es2020",
// กำหนด define สำหรับการแทนที่ค่าต่างๆ
define: {
"process.env.NODE_ENV": "\"development\"",
},
// ระบุ plugins สำหรับ esbuild
plugins: [
// ตัวอย่าง plugin
],
// เปิด sourcemap สำหรับ debugging
sourcemap: true,
// กำหนด log level
logLevel: "info",
},
},
});
optimizeDeps.force
บังคับให้ optimize dependencies ใหม่ทั้งหมด ใช้เมื่อมีการเปลี่ยนแปลง dependencies หรือเคลียร์ cache
ts
import { defineConfig } from "vite";
export default defineConfig({
optimizeDeps: {
// เปิดโหมด force ใน development เท่านั้น
force: process.env.NODE_ENV === "development",
},
});
optimizeDeps.holdUntilCrawlEnd
ควบคุมเวลาเริ่มกระบวนการ optimize ช่วยรวบรวมข้อมูล dependencies ได้ครบถ้วนก่อนเริ่ม
ts
import { defineConfig } from "vite";
export default defineConfig({
optimizeDeps: {
// รอจนกว่าการสแกน dependencies จะเสร็จสมบูรณ์ก่อน optimize
holdUntilCrawlEnd: true,
},
});
optimizeDeps.disabled
ปิดการใช้งาน dependency optimization ทั้งหมดหรือบางส่วน มีประโยชน์เมื่อต้องการ debug หรือทดสอบการทำงาน
ts
import { defineConfig } from "vite";
export default defineConfig({
optimizeDeps: {
// 'build' - ปิดการ optimize ตลอดเวลา
// 'dev' - ปิดเฉพาะในโหมด development
// false - เปิดการทำงานปกติ
disabled: process.env.NODE_ENV === "production" ? false : "dev",
},
});
optimizeDeps.needsInterop
ระบุ dependencies ที่ต้องการ interop ระหว่าง CommonJS และ ESM ช่วยให้ทำงานร่วมกับ packages รูปแบบต่างๆ ได้
ts
import { defineConfig } from "vite";
export default defineConfig({
optimizeDeps: {
// ระบุชื่อ package ที่ต้องการให้ใช้ interop
needsInterop: [
"some-commonjs-package",
"another-package",
],
},
});