Dark mode
Vite Shared Config Options
Vite's Shared Config Options เป็นตัวเลือกการกำหนดค่าทั่วไปที่สามารถใช้ได้ทั้งใน development และ production
root
ไดเรกทอรีรากของโปรเจคที่ใช้เป็นจุดเริ่มต้นสำหรับการ resolve paths ทั้งหมด ค่าเริ่มต้นคือ current working directory (process.cwd())
ts
import path from "node:path";
import { defineConfig } from "vite";
export default defineConfig({
// ระบุไดเรกทอรีรากของโปรเจค
root: path.resolve(__dirname, "src"),
});
base
Base public path สำหรับแอปพลิเคชัน ใช้เมื่อ deploy ไปยัง sub-directory บนเซิร์ฟเวอร์ ควรขึ้นต้นและลงท้ายด้วย / เมื่อระบุ path ย่อย
ts
import { defineConfig } from "vite";
export default defineConfig({
// ใช้เมื่อ deploy ไปยัง sub-path
base: "/my-app/",
});
mode
โหมดการทำงานของ Vite ใช้กำหนดสภาพแวดล้อมการทำงานระหว่าง development และ production ส่งผลต่อการโหลดไฟล์ .env และการ optimize ต่างๆ
ts
import { defineConfig } from "vite";
export default defineConfig(({ mode }) => ({
// ใช้ค่า mode ในการกำหนดค่าต่างๆ
define: {
__APP_MODE__: JSON.stringify(mode),
},
}));
define
กำหนดค่าคงที่แบบ global ที่จะถูกแทนที่ในระหว่างการ build ด้วยการแทนที่ข้อความ มีประโยชน์สำหรับการกำหนดค่าที่ต้องการให้ compile-time
ts
import { defineConfig } from "vite";
export default defineConfig({
define: {
// ตัวแปร global
__VERSION__: JSON.stringify("1.0.0"),
// process.env.NODE_ENV จะถูกแทนที่โดยอัตโนมัติ
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
},
});
resolve.alias
กำหนด aliases สำหรับทำให้การ import โมดูลต่างๆ สะดวกยิ่งขึ้น สามารถใช้ path แบบ absolute หรือกำหนดเป็น object ได้
ts
import path from "node:path";
import { defineConfig } from "vite";
export default defineConfig({
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
"@components": path.resolve(__dirname, "./src/components"),
},
},
});
css.preprocessorOptions
กำหนดค่า options สำหรับ CSS preprocessors ต่างๆ เช่น Sass, Less, Stylus ช่วยให้กำหนดตัวแปร global และ options อื่นๆ ได้
ts
import { defineConfig } from "vite";
export default defineConfig({
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/variables.scss";`,
},
less: {
math: "always",
},
},
},
});
publicDir
กำหนดไดเรกทอรีสำหรับ static assets ที่จะถูกคัดลอกไปยังโฟลเดอร์ build ไฟล์ในนี้จะไม่ถูก process โดย Vite
ts
import { defineConfig } from "vite";
export default defineConfig({
// ปิดการใช้งาน public directory
publicDir: false,
// หรือระบุ path เอง
// publicDir: 'public'
});
cacheDir
กำหนดไดเรกทอรีสำหรับเก็บแคชของ Vite เพื่อเพิ่มความเร็วในการ build ครั้งถัดไป ค่าเริ่มต้นคือ node_modules/.vite
ts
import { defineConfig } from "vite";
export default defineConfig({
// เปลี่ยนตำแหน่งแคช
cacheDir: "node_modules/.vite-cache",
});
resolve.extensions
กำหนดลำดับของไฟล์ extensions ที่จะลอง resolve เมื่อ import โดยไม่ระบุ extension เรียงลำดับตามความถี่การใช้งานเพื่อประสิทธิภาพ
ts
import { defineConfig } from "vite";
export default defineConfig({
resolve: {
extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
},
});
css.modules
กำหนดค่า CSS Modules สำหรับการ scope style ให้เฉพาะคอมโพเนนต์ ช่วยป้องกันการชนกันของชื่อคลาสระหว่างคอมโพเนนต์
ts
import { defineConfig } from "vite";
export default defineConfig({
css: {
modules: {
scopeBehaviour: "local",
generateScopedName: "[name]__[local]___[hash:base64:5]",
hashPrefix: "prefix",
globalModulePaths: [/global\.css$/],
},
},
});
export default defineConfig({ // โครงสร้างพื้นฐาน root: process.cwd(), base: '/my-app/', mode: 'development',
// กำหนดค่าคงที่แบบ global define: { APP_VERSION: JSON.stringify('1.0.0'), 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) },
// ระบุ plugins plugins: [vue()],
// กำหนดไดเรกทอรี publicDir: 'public', cacheDir: 'node_modules/.vite',
// การ resolve modules resolve: { alias: { '@': path.resolve(__dirname, './src'), '~bootstrap': 'bootstrap', }, dedupe: ['vue'], // หลีกเลี่ยงการโหลด Vue ซ้ำ conditions: ['import', 'require', 'default'], mainFields: ['module', 'jsnext:main', 'jsnext', 'browser', 'main'], extensions: ['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json', '.vue'], preserveSymlinks: false },
// กำหนดค่า HTML html: { cspNonce: 'random-nonce-value' },
// กำหนดค่า CSS css: { modules: { scopeBehaviour: 'local', localsConvention: 'camelCaseOnly', }, postcss: { plugins: [ require('autoprefixer'), require('postcss-nested') ] }, preprocessorOptions: { scss: { additionalData: @import "./src/styles/variables.scss"; @import "./src/styles/mixins.scss";
}, less: { math: 'always', globalVars: { mainColor: 'red' } } }, preprocessorMaxWorkers: 4, devSourcemap: true } })
ตัวอย่างการใช้ Environment Variables
javascript
VITE_API_URL=https://api.example.com
VITE_APP_TITLE=My Awesome App
javascript
console.log(import.meta.env.VITE_API_URL); // https://api.example.com
console.log(import.meta.env.VITE_APP_TITLE); // My Awesome App