카테고리 없음

VITE 알아보기

AroArom 2023. 9. 29. 21:58
CRA 환경에서 라이브러리를 설치할때마다 K-승질머리를 가진 나는... 성질머리가 났더랬지.. 
그래서 빠르다고 소문이 자자한 VITE를 사용해보기 시작했고, 그 과정에서 겪었던 CRA와의 차이점을 기록한다. 

VITE

  • Vite(프랑스어로 "빠르다(Quick)"를 의미한다. 발음은 /vit/
  • Vite의 Esbuild는 Webpack, Parcel과 같은 기존의 번들러 대비 10-100배 빠르다.
    • CRA는 webpack기반이다.

시작하기

$ npm create vite@latest [프로젝트 명] --template react

$ cd [프로젝트 명]
$ npm install(필요 패키지 다운)
$ npm run dev(개발 서버 실행)

CRA 환경과의 차이점

vite + ts + ESlint 프로젝트에서 baseUrl 설정하기

  • [문제] tsconfig.json 컴파일러 옵션에 "baseUrl": "./src"을 설정하면 파일을 읽지 못하는 오류가 발생함
  • [원인] ESlint가 tsconfig.json 파일의 옵션을 읽지 못하기 때문이라는데 잘 모르겠다 (링크)
  • [해결] npm install vite-tsconfig-paths --save-dev 플러그인을 설치하고, vite.config.js 파일을 수정한다.
import { defineConfig } from 'vite'
import tsconfigPaths from 'vite-tsconfig-paths' // 추가
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react(), tsconfigPaths()], // tsconfigPaths 추가
})

vite + ts + react 프로젝트에서의 환경 변수 설정하기

CRA에서의 환경변수 설정

  • REACT_APP_로 시작하는 환경변수를 .env 파일에 생성한다.
  • process.env객체로 환경변수에 접근한다.
    • process.env는 노드에서 사용하는 전역객체로 환경 변수를 저장하기 위해 사용된다.
    • process.env객체에는 .env파일에 설정한 변수들이 자동으로 등록된다.

VITE에서의 환경변수 설정

  • VITE_로 시작하는 환경변수를 .env 파일에 생성한다.
  • import.meta.env 객체로 환경변수를 선언하여 접근한다. : const gaTrackingId = import.meta.env.VITE_GA;
  • TypeScript 환경에서는 import.meta.env 타입이 기본적으로 정의되어 되지 않기 때문에 추가적으로 타입을 정의해줘야한다.
    • 루트에 vite-env.d.ts 파일을 생성하고 타입을 정의한다.
// vite-env.d.ts

/// <reference types="vite/client" /> 
interface ImportMetaEnv {
  readonly VITE_CUSTOM_ENV_VARIABLE: string;
}

interface ImportMeta { // ImportMeta 타입 정의 필요 
  readonly env: ImportMetaEnv;
}
  •  /// <reference types="vite/client" /> 구문은 필수이다.
  • [역할] TypeScript 컴파일러가 Vite 관련 타입을 프로젝트에서 사용할 수 있게 해준다.
  • [다른 선택지] tsconfig.json 파일 내에서 컴파일러 옵션에 타입을 명시해줄 수도 있다.
// tsconfig.json 
"compilerOptions": {
        "types": ["vite/client"] // 타입 명시 
}
  • *.d.ts 파일이란?
    • 선언(declare)을 의미하는 파일이다.
    • env.d.ts 는 .env 에 대한 유형정보를 제공한다.