Dark mode
Shared Config ใน Vite (สำหรับมือใหม่)
Shared Config คืออะไร?
"Shared config" คือการตั้งค่ากลางที่ใช้ได้ทั้งตอนพัฒนา (dev server), ตอน build, และตอน preview ใน Vite เช่น การตั้งค่า root, base, alias, plugins, publicDir ฯลฯ
สรุป: shared config = กฎกลางที่กำหนดพฤติกรรมหลักของโปรเจกต์ Vite
ตัวอย่าง config ที่ใช้บ่อย
ts
import vue from "@vitejs/plugin-vue";
import path from "path";
import { defineConfig } from "vite";
export default defineConfig({
root: "src", // โฟลเดอร์ root ของโปรเจกต์
base: "/my-app/", // public path ตอน deploy
publicDir: "static", // โฟลเดอร์เก็บไฟล์ static
plugins: [vue()], // เพิ่มปลั๊กอิน (เช่น Vue)
resolve: {
alias: {
"@": path.resolve(__dirname, "src"), // import '@/foo'
},
},
});
อธิบายตัวเลือกสำคัญ (แบบมือใหม่)
- root: โฟลเดอร์หลักของโปรเจกต์ (เช่น 'src')
- base: path ที่เว็บจะถูก deploy เช่น '/my-app/'
- publicDir: โฟลเดอร์สำหรับไฟล์ static (รูป, favicon ฯลฯ)
- plugins: ใส่ปลั๊กอินเสริม (เช่น Vue, React, AutoImport)
- resolve.alias: กำหนด alias ให้ import path สั้นลง (import '@/foo')
- define: กำหนดค่าคงที่ไว้ใช้ในโค้ด (เช่น DEV)
- envDir/envPrefix: ตั้งค่าการอ่านไฟล์ .env
Q&A สำหรับมือใหม่
Q: shared config ต่างจาก server/build/preview ยังไง? A: shared config ใช้ได้ทุกโหมด ส่วน server/build/preview จะมีเฉพาะในแต่ละโหมดเท่านั้น
Q: ต้องตั้ง root/base/publicDir ทุกโปรเจกต์ไหม? A: ไม่จำเป็น ถ้าไม่ตั้ง Vite จะใช้ค่า default ให้ (root = โฟลเดอร์โปรเจกต์, base = '/', publicDir = 'public')
Q: plugins ใส่หลายตัวได้ไหม? A: ได้ ใส่เป็น array เช่น [vue(), react()]
สรุปอ็อปชันที่ใช้ได้ทั้งใน Dev Server, Preview Server และ Build Process:
root (
string
)
โฟลเดอร์ root ของโปรเจกต์ (default:process.cwd()
)base (
string
)
กำหนด public path สำหรับไฟล์ assets (default:/
)mode (
string
)
โหมดการทำงาน (development
หรือproduction
)define (
Record<string, any>
)
แทนที่ค่าคงที่ในโค้ดก่อนบันเดิล (เช่น__DEV__
)envDir (
string
)
โฟลเดอร์สำหรับไฟล์.env
(default: root)envPrefix (
string | string[]
)
คำนำหน้าในการอ่านตัวแปร environment (default:VITE_
)publicDir (
string
)
โฟลเดอร์เก็บไฟล์ static (default:public
)cacheDir (
string
)
โฟลเดอร์เก็บ cache ของ Vite (default:node_modules/.vite
)plugins (
Plugin[]
)
อาร์เรย์ของ Vite pluginresolve.alias (
Record<string, string>
/Alias[]
)
กำหนด path alias สำหรับ importresolve.dedupe (
string[]
)
บังคับ dedupe dependencies ที่ระบุresolve.conditions (
string[]
)
เงื่อนไขสำหรับเลือก entry point ในpackage.json
(default:['import']
)resolve.mainFields (
string[]
)
กำหนดลำดับของ fields ในpackage.json
สำหรับการ resolve (default:['module', 'jsnext:main', 'jsnext']
)resolve.extensions (
string[]
)
รายการนามสกุลไฟล์ที่ Vite จะพยายาม resolve (default:['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json']
)resolve.preserveSymlinks (
boolean
)
ไม่ resolve symlink ไปยัง real path (default:false
)logLevel (
'silent' | 'error' | 'warn' | 'info' | 'debug'
)
ระบุระดับ log (default:info
)clearScreen (
boolean
)
ล้าง console เมื่อเริ่มต้น (default:true
)html.cspNonce (
string
)
nonce สำหรับ Content Security Policy ในไฟล์ HTMLcss (
CssOptions
)
ตั้งค่า CSS preprocess, modules, postcsscss.modules (
ModulesOptions
)
ตั้งค่า CSS Modules เช่น scope name patterncss.postcss (
PostCSS.Options
)
กำหนดการใช้งาน PostCSS (เช่นไฟล์ config)css.preprocessorOptions (
Record<string, any>
)
ส่ง options ให้ CSS preprocessor (เช่น{ scss: { additionalData } }
)css.preprocessorMaxWorkers (
number
)
จำนวน worker สูงสุดสำหรับ preprocess (default:os.cpus().length - 1
)css.devSourcemap (
boolean
)
เปิด source map สำหรับ CSS ในโหมด development (default:false
)css.transformer (
string
)
เลือก CSS transformer (เช่น'esbuild'
หรือ'lightningcss'
)css.lightningcss (
LightningCssOptions
)
ตั้งค่า Lightning CSS transformerjson (
JsonOptions
)
ปรับการ import.json
json.namedExports (
boolean
)
เปิดใช้งาน named exports เมื่อนำเข้า.json
(default:true
)json.stringify (
boolean
)
นำเข้าไฟล์.json
เป็น string แทน object (default:false
)esbuild (
EsbuildOptions
)
ปรับการแปลงด้วย esbuild สำหรับ deps pre-bundlingesbuild.target (
string
|string[]
)
ระบุ target version สำหรับการ pre-bundling (เช่น'es2015'
)customLogger (
Logger
)
กำหนด Logger interface เพื่อแสดง log ของ ViteappType (
'spa' | 'mpa'
)
กำหนดประเภทของแอป ('spa'
หรือ'mpa'
, default:'spa'
)future (
Record<string, boolean>
)
ฟีเจอร์ทดลองที่จะเปิดใช้งานใน Vite (experimental)assetsInclude (
string | RegExp | (string | RegExp)[]
)
กำหนดไฟล์นามสกุลพิเศษให้จัดการเป็น static assetoptimizeDeps (
DepOptimizationOptions
)
พารามิเตอร์สำหรับ pre-bundling dependenciesssr, server, preview, build
อ็อปชันเฉพาะแต่ละโหมด (ดูไฟล์แยก)