Skip to content

Nuxt.js Configuration

ภาพรวม

ไฟล์ nuxt.config.ts เป็นไฟล์หลักที่ใช้กำหนดค่าต่างๆ ของแอปพลิเคชัน Nuxt.js อยู่ที่รากโปรเจค (root) ของโปรเจค สามารถใช้เพื่อกำหนดค่าต่างๆ หรือขยายความสามารถของแอปพลิเคชันได้

ไฟล์ Configuration พื้นฐาน

typescript
export default defineNuxtConfig({
  // การกำหนดค่าต่างๆ
});

ตารางเปรียบเทียบ runtimeConfig และ app.config

คุณสมบัติruntimeConfigapp.config
การกำหนดค่ากำหนดใน nuxt.config.tsกำหนดใน app.config.ts
การ Overrideใช้ environment variables ได้กำหนดค่าตายตัวที่ build time
การเข้าถึงใช้ useRuntimeConfig()ใช้ useAppConfig()
การใช้งานค่าที่เป็นความลับหรือต้องการกำหนดทีหลังค่าคงที่ของแอป เช่น theme, title
ตัวอย่างAPI keys, tokensTheme settings, feature flags

ตาราง Configuration ไฟล์ภายนอก

เครื่องมือไฟล์ Configการกำหนดค่าใน Nuxt
Nitronitro.config.tsnitro ใน nuxt.config.ts
Vitevite.config.tsvite ใน nuxt.config.ts
webpackwebpack.config.tswebpack ใน nuxt.config.ts
PostCSSpostcss.config.jspostcss ใน nuxt.config.ts
TypeScripttsconfig.json-
ESLinteslint.config.js-
Prettierprettier.config.js-

ตัวอย่างการกำหนดค่า

1. กำหนดค่า runtimeConfig

typescript
// nuxt.config.ts
export default defineNuxtConfig({
  runtimeConfig: {
    // ค่าที่ใช้เฉพาะฝั่งเซิร์ฟเวอร์
    apiSecret: "123",
    // ค่าที่เข้าถึงได้ทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์
    public: {
      apiBase: "/api",
    },
  },
});

2. กำหนดค่า app.config

typescript
// app.config.ts
export default defineAppConfig({
  title: "แอปของฉัน",
  theme: {
    dark: true,
    colors: {
      primary: "#00DC82",
      secondary: "#2D2E35",
    },
  },
});

3. กำหนดค่า Environment ตามสภาพแวดล้อม

typescript
// nuxt.config.ts
export default defineNuxtConfig({
  // ใช้เมื่อ build สำหรับ production
  $production: {
    routeRules: {
      "/**": { isr: true },
    },
  },
  // ใช้เมื่อรันในโหมด development
  $development: {
    devtools: { enabled: true },
  },
  // ใช้เมื่อกำหนด envName เป็น 'staging'
  $env: {
    staging: {
      runtimeConfig: {
        public: {
          apiBase: "https://staging-api.example.com",
        },
      },
    },
  },
});

การกำหนดค่า Vue

1. ใช้กับ Vite

typescript
export default defineNuxtConfig({
  vite: {
    vue: {
      // กำหนดค่า @vitejs/plugin-vue
      customElement: true,
    },
    vueJsx: {
      // กำหนดค่า @vitejs/plugin-vue-jsx
      mergeProps: true,
    },
  },
});

2. ใช้กับ webpack

typescript
export default defineNuxtConfig({
  webpack: {
    loaders: {
      vue: {
        hotReload: true,
      },
    },
  },
});

ฟีเจอร์ทดลองใช้ (Experimental Features)

typescript
export default defineNuxtConfig({
  // เปิดใช้ View Transitions API
  experimental: {
    viewTransition: true,
  },
  // เปิดใช้ Vue experimental features
  vue: {
    propsDestructure: true,
  },
});

สรุป

  • ใช้ runtimeConfig สำหรับค่าที่ต้องการกำหนดผ่าน environment variables
  • ใช้ app.config สำหรับค่าคงที่ที่กำหนดตอน build time
  • กำหนดค่าเครื่องมือต่างๆ ผ่าน nuxt.config.ts
  • สามารถแยกการกำหนดค่าตามสภาพแวดล้อมได้
  • เปิดใช้ฟีเจอร์ทดลองใช้ได้ตามต้องการ

TIP

  • ควรแยกค่าความลับออกมาไว้ใน runtimeConfig
  • ใช้ TypeScript เพื่อความปลอดภัยของประเภทข้อมูล
  • ทดสอบการทำงานในทุกสภาพแวดล้อมที่กำหนดค่าไว้