설정

Nuxt는 생산성을 높이기 위해 합리적인 기본값으로 설정되어 있습니다.

기본적으로 Nuxt는 대부분의 사용 사례를 포괄하도록 설정되어 있습니다. nuxt.config.ts 파일은 이 기본 설정을 재정의하거나 확장할 수 있습니다.

Nuxt 설정

nuxt.config.ts 파일은 Nuxt 프로젝트의 루트에 위치하며 애플리케이션의 동작을 재정의하거나 확장할 수 있습니다.

최소 설정 파일은 설정이 포함된 객체를 담고 있는 defineNuxtConfig 함수를 export 합니다. defineNuxtConfig 헬퍼는 import 없이 전역에서 사용할 수 있습니다.

nuxt.config.ts
export default defineNuxtConfig({
  // My Nuxt config
})

이 파일은 예를 들어 커스텀 스크립트를 추가하거나, 모듈을 등록하거나, 렌더링 모드를 변경하는 등의 목적으로 문서에서 자주 언급됩니다.

모든 옵션은 설정 레퍼런스에 설명되어 있습니다.
Nuxt로 애플리케이션을 만들기 위해 TypeScript를 반드시 사용할 필요는 없습니다. 하지만 nuxt.config 파일에는 .ts 확장자를 사용하는 것을 강력히 권장합니다. 이렇게 하면 IDE에서 힌트를 제공받아 설정을 편집하는 동안 오타와 실수를 방지할 수 있습니다.

환경별 재정의

nuxt.config에서 완전한 타입 지원을 갖춘 환경별 재정의를 설정할 수 있습니다.

nuxt.config.ts
export default defineNuxtConfig({
  $production: {
    routeRules: {
      '/**': { isr: true },
    },
  },
  $development: {
    //
  },
  $env: {
    staging: {
      //
    },
  },
})

Nuxt CLI 명령을 실행할 때 환경을 선택하려면, --envName 플래그에 이름을 전달하면 됩니다. 예: nuxt build --envName staging.

이러한 재정의 뒤에 있는 메커니즘에 대해 더 알아보려면, 환경별 설정에 대한 c12 문서를 참고하세요.

레이어를 작성하는 경우, $meta 키를 사용하여 여러분 또는 레이어 소비자가 사용할 수 있는 메타데이터를 제공할 수도 있습니다.

환경 변수와 비공개 토큰

runtimeConfig API는 환경 변수와 같은 값을 애플리케이션의 나머지 부분에 노출합니다. 기본적으로 이 키들은 서버 사이드에서만 사용할 수 있습니다. runtimeConfig.public 및 Nuxt 내부적으로 사용되는 runtimeConfig.app 내의 키는 클라이언트 사이드에서도 사용할 수 있습니다.

이 값들은 nuxt.config에서 정의해야 하며, 환경 변수를 사용해 재정의할 수 있습니다.

export default defineNuxtConfig({
  runtimeConfig: {
    // 서버 사이드에서만 사용할 수 있는 비공개 키
    apiSecret: '123',
    // public 안의 키는 클라이언트 사이드에도 노출됩니다
    public: {
      apiBase: '/api',
    },
  },
})

이 변수들은 useRuntimeConfig() 컴포저블을 사용해 애플리케이션의 나머지 부분에 노출됩니다.

app/pages/index.vue
<script setup lang="ts">
const runtimeConfig = useRuntimeConfig()
</script>
Read more in Docs > 4 X > Guide > Going Further > Runtime Config.

앱 설정

기본적으로 소스 디렉터리(app/)에 위치한 app.config.ts 파일은 빌드 시점에 결정될 수 있는 공개 변수를 노출하는 데 사용됩니다. runtimeConfig 옵션과 달리, 이 값들은 환경 변수를 사용해 재정의할 수 없습니다.

최소 설정 파일은 설정이 포함된 객체를 담고 있는 defineAppConfig 함수를 export 합니다. defineAppConfig 헬퍼는 import 없이 전역에서 사용할 수 있습니다.

app/app.config.ts
export default defineAppConfig({
  title: 'Hello Nuxt',
  theme: {
    dark: true,
    colors: {
      primary: '#ff0000',
    },
  },
})

이 변수들은 useAppConfig 컴포저블을 사용해 애플리케이션의 나머지 부분에 노출됩니다.

app/pages/index.vue
<script setup lang="ts">
const appConfig = useAppConfig()
</script>
Read more in Docs > 4 X > Directory Structure > App > App Config.

runtimeConfig vs. app.config

앞에서 언급했듯이, runtimeConfigapp.config는 모두 애플리케이션의 나머지 부분에 변수를 노출하는 데 사용됩니다. 어느 것을 사용해야 할지 결정하기 위한 가이드라인은 다음과 같습니다:

  • runtimeConfig: 빌드 이후 환경 변수를 사용해 지정해야 하는 비공개 또는 공개 토큰.
  • app.config: 빌드 시점에 결정되는 공개 토큰, 테마 종류, 제목 및 민감하지 않은 기타 프로젝트 설정과 같은 웹사이트 설정.
기능runtimeConfigapp.config
클라이언트 사이드HydratedBundled
환경 변수✅ 예❌ 아니오
반응성✅ 예✅ 예
타입 지원✅ 부분적✅ 예
요청별 설정❌ 아니오✅ 예
Hot Module Replacement❌ 아니오✅ 예
비원시 JS 타입❌ 아니오✅ 예

외부 설정 파일

Nuxt는 설정에 대한 단일 진실 공급원으로 nuxt.config.ts 파일을 사용하며, 외부 설정 파일을 읽는 것을 건너뜁니다. 프로젝트를 빌드하는 과정에서 이러한 파일을 설정해야 할 필요가 있을 수 있습니다. 아래 표는 일반적인 설정과, 해당되는 경우 Nuxt에서 이를 설정하는 방법을 보여줍니다.

NameConfig FileHow To Configure
Nitronitro.config.tsnuxt.config에서 nitro 키 사용
PostCSSpostcss.config.jsnuxt.config에서 postcss 키 사용
Vitevite.config.tsnuxt.config에서 vite 키 사용
webpackwebpack.config.tsnuxt.config에서 webpack 키 사용

다음은 다른 일반적인 설정 파일 목록입니다:

NameConfig FileHow To Configure
TypeScripttsconfig.jsonMore Info
ESLinteslint.config.jsMore Info
Prettierprettier.config.jsMore Info
Stylelintstylelint.config.jsMore Info
TailwindCSStailwind.config.jsMore Info
Vitestvitest.config.tsMore Info

Vue 설정

Vite 사용 시

@vitejs/plugin-vue 또는 @vitejs/plugin-vue-jsx에 옵션을 전달해야 하는 경우, nuxt.config 파일에서 이를 설정할 수 있습니다.

nuxt.config.ts
export default defineNuxtConfig({
  vite: {
    vue: {
      customElement: true,
    },
    vueJsx: {
      mergeProps: true,
    },
  },
})
Read more in Docs > 4 X > API > Configuration > Nuxt Config#vue.

webpack 사용 시

webpack을 사용하고 vue-loader를 설정해야 하는 경우, nuxt.config 파일 안에서 webpack.loaders.vue 키를 사용해 설정할 수 있습니다. 사용 가능한 옵션은 여기에 정의되어 있습니다.

nuxt.config.ts
export default defineNuxtConfig({
  webpack: {
    loaders: {
      vue: {
        hotReload: true,
      },
    },
  },
})
Read more in Docs > 4 X > API > Configuration > Nuxt Config#loaders.

실험적인 Vue 기능 활성화

propsDestructure와 같은 Vue의 실험적인 기능을 활성화해야 할 수 있습니다. Nuxt는 사용 중인 빌더와 관계없이 nuxt.config.ts에서 이를 쉽게 활성화할 수 있는 방법을 제공합니다:

nuxt.config.ts
export default defineNuxtConfig({
  vue: {
    propsDestructure: true,
  },
})

Vue 3.4 및 Nuxt 3.9에서의 실험적 reactivityTransform 마이그레이션

Nuxt 3.9와 Vue 3.4부터 reactivityTransform은 Vue에서 Vue Macros로 이동되었으며, Vue Macros는 Nuxt 통합을 제공합니다.

Read more in Docs > 4 X > API > Configuration > Nuxt Config#vue 1.