코드/Knowledge Base

[Vite] import.meta interface

Yeah-Panda 2024. 9. 3. 10:34

vite 에서는 import.meta 를 통해 환경변수에 접근할수 있도록 제공한다.

이 import.meta 가 타입 추론이 되지 않는 경우가 있다

(특히 hot 속성)

별도로 인터페이스를 선언해주어야 한다.

interface ViteHotContext {
  readonly data: any

  accept(): void
  accept(cb: (mod: ModuleNamespace | undefined) => void): void
  accept(dep: string, cb: (mod: ModuleNamespace | undefined) => void): void
  accept(
    deps: readonly string[],
    cb: (mods: Array<ModuleNamespace | undefined>) => void,
  ): void

  dispose(cb: (data: any) => void): void
  prune(cb: (data: any) => void): void
  invalidate(message?: string): void

  on<T extends string>(
    event: T,
    cb: (payload: InferCustomEventPayload<T>) => void,
  ): void
  off<T extends string>(
    event: T,
    cb: (payload: InferCustomEventPayload<T>) => void,
  ): void
  send<T extends string>(event: T, data?: InferCustomEventPayload<T>): void
}

interface ImportMeta {
  readonly hot?: ViteHotContext
}

그런 다음 타입 스크립트 컨피그 설정 해주면 된디ㅏ

{
  "compilerOptions": {
    "types": [
      "vite/client", // Vite 타입 정의 추가
      "./types/vite-env" // 방금 만든 타입 정의 파일 추가
    ]
  }
}

 

 

출처: https://vitejs.dev/guide/api-hmr

 

Vite

Next Generation Frontend Tooling

vitejs.dev

환경 변수 관련 vite 링크: 

https://ko.vitejs.dev/guide/env-and-mode

 

Vite

Vite, 차세대 프런트엔드 개발 툴

ko.vitejs.dev

 

vite import.meta 를 사용하는 이유

https://pozafly.github.io/environment/why-do-you-use-import-meta-in-vite/

 

Vite에서 import.meta는 왜 사용하는 걸까? (feat. HMR)

Vite의 철학에 기반한 방식, import.meta에 대한 이야기

pozafly.github.io

 

 

'코드 > Knowledge Base' 카테고리의 다른 글

[Npm] npm and git  (0) 2024.01.12
[TS] d.ts Types 파일 만들기  (1) 2023.12.11
[JS] 쿠키 삭제  (0) 2023.03.31
[JS] 이벤트 루프  (0) 2023.01.04
웹소켓이 뭐냐면  (0) 2022.01.26