app.config.ts

Nuxt 3는 라이프사이클 내에서 런타임에 업데이트하거나 nuxt 플러그인을 사용하고 HMR(핫 모듈 교체)로 편집할 수 있는 기능을 통해 애플리케이션 내 반응 구성을 노출하는 app.config 구성 파일을 제공한다.

 

app.config.ts 파일을 사용하여 런타임 앱 구성을 쉽게 제공할 수 있다. 확장자는 .ts, .js 또는 .mjs 중 하나일 수 있다.

 

app.config.ts

export default defineAppConfig({
  foo: 'bar'
})

 

app.config 파일 안에 비밀 값을 넣으면 안된다. 이는 사용자 클라이언트 번들에 노출된다.

 

구성 및 환경 변수를 앱의 나머지 부분에 노출하려면 app.config 파일에서 구성을 정의해야한다.

 

app.config.ts

export default defineAppConfig({
  theme: {
    primaryColor: '#ababab'
  }
})

app.config에 테마를 추가할 때 Nuxt는 Vite 또는 webpack을 사용하여 코드를 묶는다. 페이지를 서버에서 렌더링할 때와 useAppConfig 컴포저블을 사용하여 브라우저에서 테마에 보편적으로 액세스할 수 있다.

 

pages/index.vue

<!--
pages/index.vue
-->

<script setup>
const appConfig = useAppConfig()

console.log(appConfig.theme)
</script>

사용자 정의 srcDir을 구성할 때 app.config 파일을 새 srcDir 경로의 루트에 배치해야 한다.

 

App Config 수동 입력

Nuxt는 제공된 앱 구성에서 TypeScript 인터페이스를 자동으로 생성하려고 시도하므로 직접 입력할 필요가 없다.

 

그러나 직접 입력하고 싶은 경우도 있을텐데. 입력할 수 있는 항목은 두 가지다.

 

AppConfigInput

AppConfigInput은 앱 구성을 설정할 때 유효한 입력 옵션이 무엇인지 선언하는 모듈 작성자가 사용할 수 있다. 이는 useAppConfig() 유형에 영향을 미치지 않는다.

 

index.d.ts

declare module 'nuxt/schema' {
  interface AppConfigInput {
    /** Theme configuration */
    theme?: {
      /** Primary app color */
      primaryColor?: string
    }
  }
}

// It is always important to ensure you import/export something when augmenting a type
export {}

 

AppConfigOutput

useAppConfig() 호출 결과를 입력하려면 AppConfig를 확장해야한다.

 

실제로 정의된 앱 구성에서 Nuxt가 추론하는 유형을 덮어쓰게 되므로 AppConfig를 입력할 때 주의하자.

 

index.d.ts

// index.d.ts

declare module 'nuxt/schema' {
  interface AppConfig {
    // This will entirely replace the existing inferred `theme` property
    theme: {
      // You might want to type this value to add more specific types than Nuxt can infer,
      // such as string literal types
      primaryColor?: 'red' | 'blue'
    }
  }
}

// It is always important to ensure you import/export something when augmenting a type
export {}

 

병합 전략

Nuxt는 애플리케이션의 AppConfig 내부 레이어에 대해 사용자 정의 병합 전략을 사용한다.

 

이 전략은 값으로 배열이 있는 app.config 의 모든 키에 대해 사용자 정의 병합 전략을 정의할 수 있는 Function Merger를 사용하여 구현된다.

 

Function Merger는 애플리케이션의 기본app.config에서만 사용해야한다.

 

사용 예

layer/app.config.ts

layer/app.config.ts

export default defineAppConfig({
  // Default array value
  array: ['hello'],
})

 

app.config.ts

// app.config.ts

export default defineAppConfig({
  // Overwrite default array value by using a merger function
  array: () => ['bonjour'],
})

'Nuxt 공식문서 번역 > Directories' 카테고리의 다른 글

nuxt.config.ts  (0) 2023.12.18
app.vue  (1) 2023.12.18
.nuxtignore  (0) 2023.12.18
.gitignore  (0) 2023.12.18
.env  (0) 2023.12.18
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유