tsconfig.json이란?
tsconfig.json이란? (What is a tsconfig.json)
디렉터리에 tsconfig.json 파일이 있으면 컴파일러는 그 디렉터리를 TypeScript 프로젝트의 루트로 인식해요. 이 파일은 프로젝트의 루트 파일 목록과 컴파일할 때 필요한 컴파일러 옵션을 지정합니다. JavaScript 프로젝트는 거의 같은 역할을 하는 jsconfig.json을 대신 쓸 수 있는데, 기본적으로 JavaScript 관련 컴파일러 플래그 몇 개가 켜져 있다는 점만 달라요.
출처: TypeScript 핸드북
개요 (Overview)
프로젝트가 컴파일되는 방식은 크게 두 가지입니다.
tsconfig.json 또는 jsconfig.json 사용하기
- 입력 파일 없이
tsc를 실행하면, 컴파일러가 현재 디렉터리에서 시작해 상위 디렉터리로 거슬러 올라가며tsconfig.json을 찾습니다. - 입력 파일 없이
tsconfig.json파일이 들어 있는 디렉터리 경로, 또는 유효한 설정이 담긴.json파일 경로를--project(줄여서-p) 옵션으로 지정해 실행할 수도 있어요.
명령줄에 입력 파일을 지정하면 tsconfig.json 파일은 무시됩니다.
예시
tsconfig.json 파일의 실제 예시를 볼게요.
-
files속성 사용하기{ "compilerOptions": { "module": "commonjs", "noImplicitAny": true, "removeComments": true, "preserveConstEnums": true, "sourceMap": true }, "files": [ "core.ts", "sys.ts", "types.ts", "scanner.ts", "parser.ts", "utilities.ts", "binder.ts", "checker.ts", "emitter.ts", "program.ts", "commandLineParser.ts", "tsc.ts", "diagnosticInformationMap.generated.ts" ] } -
{ "compilerOptions": { "module": "system", "noImplicitAny": true, "removeComments": true, "preserveConstEnums": true, "outFile": "../../built/local/tsc.js", "sourceMap": true }, "include": ["src/**/*"], "exclude": ["**/*.spec.ts"] }
TSConfig 베이스
코드를 실행하려는 JavaScript 런타임 환경에 따라, github.com/tsconfig/bases에서 쓸 수 있는 베이스 설정이 이미 마련되어 있어요. 이들은 여러분의 프로젝트가 상속하는 tsconfig.json 파일로, 런타임 지원 부분을 알아서 처리해 주기 때문에 tsconfig.json이 훨씬 간결해집니다.
예를 들어 Node.js 12 이상을 쓰는 프로젝트라면 npm 모듈 @tsconfig/node12를 쓰면 돼요:
{
"extends": "@tsconfig/node12/tsconfig.json",
"compilerOptions": {
"preserveConstEnums": true
},
"include": ["src/**/*"],
"exclude": ["**/*.spec.ts"]
}
이러면 tsconfig.json이 런타임의 온갖 세부 사항 대신, 프로젝트만의 고유한 선택에 집중할 수 있어요. 이미 만들어진 tsconfig 베이스가 몇 개 있고, 커뮤니티가 다양한 환경에 맞춰 더 추가해 주길 기대하고 있습니다.
세부 사항
"compilerOptions" 속성은 생략할 수 있는데, 생략하면 컴파일러 기본값이 사용됩니다. 지원되는 컴파일러 옵션 전체 목록을 확인해 보세요.
TSConfig 레퍼런스
수백 가지 설정 옵션을 더 배우고 싶다면 TSConfig 참조 문서를 보면 돼요.
스키마
tsconfig.json의 스키마는 JSON Schema Store에서 확인할 수 있어요.