개발하다보니 정작 tsconfig.json을 제대로 생각 안해본 거 같아서 정리를 해본다.
프로젝트 컴파일하는 데 필요한 루트 파일과 컴파일러 옵션을 지정해놓은 파일이다.
파일의 최상위에 위치하고 있는 속성으로 주요 설정 옵션은 다음과 같다.
{
"compilerOptions": {
// 컴파일러 옵션들이 위치
},
"include": [
// 컴파일에 포함될 파일 또는 디렉터리의 리스트
],
"exclude": [
// 컴파일에서 제외될 파일 또는 디렉터리의 리스트
],
"files": [
// 컴파일에 포함될 파일들의 리스트
]
"extends": [
// 다른 tsconfig.json 파일의 설정
],
}
컴파일 대상 파일들을 어떻게 변환할지 정하는 옵션이다.
프로젝트에서 컴파일할 파일들의 목록을 명시적으로 지정하는 속성이다. exclude보다 우선순위가 높다.
files 속성과 같이 프로젝트에서 컴파일할 파일들을 지정하는 속성이지만, 와일드 카드 패턴으로 저장한다는 차이점이 있다. exclude보다 우선순위가 낮기 때문에 include에 명시되어 있어도 exclude에 명시되어 있으면 제외 되게 된다.
프로젝트에서 컴파일 대상에서 제외할 파일들을 와일드카드 패턴으로 지정하는 속성이다. 일반적으로 빌드 또는 의존성 디렉터리와 같은 컴파일할 필요가 없는 항목을 제외하는데 사용된다.
여러 타입스크립트 프로젝트에서 설정 파일을 공통으로 사용하거나 빌드용 타입스크립트 설정을 분리하고 싶을 때 사용한다.
이 외에도 엄~~청 많다.
아래는 내가 react 프로젝트에서 사용했던 tsconfig.json 파일이다.
{
"compilerOptions": {
"target": "ES6",
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
},
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true
},
"include": ["src"]
}
"target": "ES6"
: 컴파일된 코드의 ECMAScript 버전을 ES6(ES2015)로 지정
"baseUrl": "."
: 모듈 해석을 시작할 기본 디렉토리를 현재 디렉토리로 설정
"paths": { "@/*": ["src/*"]
} : 모듈 경로 별칭을 설정합니다. 이 경우 @를 사용하여 src 디렉토리를 참조할 수 있습니다.
"lib": ["dom", "dom.iterable", "esnext"]
: 컴파일러가 사용할 라이브러리 파일을 지정합니다. 여기서는 DOM API, DOM Iterable, 그리고 ESNext 기능을 사용할 수 있습니다.
"allowJs": true
: JavaScript 파일을 컴파일에 포함
"skipLibCheck": true
: 타입 선언 파일의 타입 검사를 건너뜀
"esModuleInterop": true
: CommonJS와 ES 모듈 간의 상호 운용성을 허용
"allowSyntheticDefaultImports": true
: 기본 import를 사용하여 모듈을 가져올 수 있도록 허용
"strict": true
: 모든 엄격한 타입 검사 옵션을 활성화
"forceConsistentCasingInFileNames": true
: 파일 이름이 대소문자 일관성을 갖도록 강제
"noFallthroughCasesInSwitch": true
: switch 문에서 case 절이 자동으로 다음 case 절로 진행되지 않도록 함
"module": "esnext"
: 출력 파일의 JavaScript 모듈 형식을 설정합니다. 여기서는 최신의 ES 모듈 형식을 사용
"moduleResolution": "node"
: Node.js 방식의 모듈 해석 알고리즘을 사용
"resolveJsonModule": true
: JSON 파일을 import 할 수 있도록 허용
"isolatedModules": true
: 각 파일을 분리된 모듈로 처리
"noEmit": true
: 출력 파일을 생성하지 않습니다. 이 옵션은 주로 타입 검사만 수행하려는 경우에 사용됩니다.
"jsx": "react-jsx"
: JSX를 지원하고, React 17 이상의 JSX 변환을 사용합니다.
"noImplicitAny": true
: 암시적 'any' 타입을 허용하지 않습니다.
"noImplicitThis": true
: 'this' 표현식이 암시적 'any' 타입을 가지도록 허용하지 않습니다.
"strictNullChecks": true
: 엄격한 null 및 undefined 검사를 수행
"include": ["src"]
: 컴파일에 포함될 파일과 디렉토리를 지정.
What is a tsconfig.json
타입스크립트 컴파일 설정 - tsconfig 옵션 총정리
쉽게시작하는 타입스크립트 - 장기효