코딩하는라민

[Vite] tsconfig.json 외에 tsconfig.app.json, tsconfig.node.json 파일이 생성되는 이유 본문

Build · Deploy/Vite

[Vite] tsconfig.json 외에 tsconfig.app.json, tsconfig.node.json 파일이 생성되는 이유

코딩하는라민 2024. 10. 20. 01:58
728x90
반응형
BIG

[Vite] tsconfig.json 외에 tsconfig.app.json, tsconfig.node.json 파일이 생성되는 이유

 

 

Vite 프로젝트 생성 시  tsconfig.json 파일 외에도 tsconfig.node.json 과  tsconfig.app.json 파일이 생성된다.

이번 포스팅에서는 왜 세 개의 파일이 생성되며, 각각의 역할은 무엇인지 그리고 서로 어떤 관계가 있는지 알아보도록 할 것이다.

 

각 파일의 역할

📄 tsconfig.json

tsconfig.json 파일은 공통적인 설정을 정의하는 파일이다. 주로 빌드 설정, 전역 옵션, 참조 파일 목록 등을 포함한다.

 

📄tsconfig.app.json

tsconfig.app.json 는 주로 브라우저와 관련된 옵션을 포함한다. Jsx 설정, 라이브러리, DOM 관련 옵션을 설정할 수 있다.

 

📄tsconfig.node.json

tsconfig.node.json Node.js와 관련된 옵션을 포함한다.

 

 

환경 별 설정 분리

 

브라우저 환경과 Node.js 환경은 서로 사용하는 타입, 모듈 시스템이 다르기 때문에 설정을 분리하는 것이 좋다.

예를 들면, 브라우저에서는 DOM 관련 API 가 필요하지만, Node 환경에서는 필요하지 않다. 반면, Node.js 에서 사용하는 내장 모듈은 브라우저에서 사용할 수 없다.


따라서 tsconfig 파일을 세 가지로 나누는 이유는 프로젝트 환경에 따른 타입스크립트 설정을 분리하여 더 유연하게 관리하기 위함이다. tsconfig.node.json 과  tsconfig.app.json 은 환경별로 그에 맞는 컴파일러 옵션을 제공하기 위해 나눠져있는 것이다.

 

tsconfig 파일 예시

tsconfig.json

  
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"esModuleInterop": true
},
"exclude": ["node_modules"],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
]
}
  • references 설정
    • tsconfig.json 파일이 tsconfig.node.json 과  tsconfig.app.json 을 참조하고 있음을 나타낸다. 이를 통해 모듈 간의 관계를 명확하게 설정할 수 있다.
    • 타입스크립트 프로젝트 참조를 통해 변경된 파일만 빌드할 수 있다. 이 옵션을 통해 전체 프로젝트를 다시 컴파일하는 대신 변경된 모듈만 빠르게 업데이트하여 빌드 시간을 단축할 수 있다.

 

tsconfig.app.json(브라우저용)

  
{
"extends": "./tsconfig.json",
"compilerOptions": {
"composite": true,
"lib": ["dom", "dom.iterable", "esnext"],
"jsx": "react-jsx"
},
"include": ["src/**/*.ts", "src/**/*.tsx"]
}
  • composite 옵션
    • true
      • 타입스크립트의 프로젝트 참조 기능 활성화
      • 프로젝트를 모듈로 나누어 관리한다.  즉, 각 모듈의 변경을 감지하여 필요한 부분만 다시 컴파일한다.
      • 이 옵션을 통해 컴파일 속도가 향상된다.
    • false
      • 전체 프로젝트를 다시 컴파일하여 개발 속도가 느려질 수 있다.

 

tsconfig.node.json(Node.js용)

  
{
"extends": "./tsconfig.json",
"compilerOptions": {
"composite": true,
"module": "commonjs",
"lib": ["esnext"],
"types": ["node"]
},
"include": ["vite.config.ts", "scripts/**/*.ts"]
}

 

 

마치며

tsconfig.app.json 와 tsconfig.node.json 파일은 각 환경에서 타입스크립트가 어떻게 동작해야 하는지를 정의한다. 각 환경에 맞는 설정을 통해 프로젝트를 더 유연하게 관리하고, 변경된 모듈만 빠르게 업데이트하여 빌드 시간을 단축할 수 있다.

 

 

 

728x90
반응형
BIG