tsconfig.json (혹은 tsconfig.ts)
: TypeScript 컴파일러에 프로젝트의 설정(컴파일 옵션, 포함할 파일, 제외할 파일 등)을 알려주는 구성 파일입니다.
- 주요 역할:
- 컴파일 옵션 설정: 예를 들어, ECMAScript 버전(target), 모듈 시스템(module), 엄격한 타입 검사(strict) 등.
- 프로젝트 파일 지정: 어떤 파일들을 컴파일할지 포함(include) 및 제외(exclude)할 파일들을 지정.
tsc (TypeScript Compiler)
: TypeScript 소스 코드를 JavaScript로 컴파일하는 명령줄 도구입니다.
- 주요 역할:
- 컴파일 실행: 프로젝트 루트에 tsconfig.json이 있으면, 그 설정에 따라 전체 프로젝트를 컴파일합니다.
- 파일 단위 컴파일: tsconfig.json 없이 단일 파일을 컴파일할 수도 있습니다.
- 사용 방법:
터미널에서 tsc 명령을 실행하면, 기본적으로 tsconfig.json을 읽어서 TypeScript 파일들을 컴파일합니다.
tsc: tsconfig 설정에 따른 전체 프로젝트 컴파일
tsc [파일명]: 단일 파일 컴파일
tsc --init: 기본 tsconfig.json 생성
tsc -w: 변경 감지 후 자동 컴파일
tsc -p [경로]: 특정 tsconfig.json을 사용하여 컴파일
tsc -b: 프로젝트 참조를 사용하는 빌드 모드
{
//다중 프로젝트를 구성할 때, 다른 프로젝트(tsconfig)를 참조할 수 있게 해줍니다.
"references": [
{ "path": "./core" },
{ "path": "./ui" }
]
//다른 tsconfig 파일의 설정을 상속하여 재사용할 수 있습니다
"extends": "./tsconfig.base.json"
//컴파일에 포함할 파일들을 명시적으로 나열합니다.
"files" : []
//컴파일에서 제외할 파일이나 디렉토리를 지정합니다.
"exclude" : []
//컴파일 대상 파일들의 glob 패턴 목록을 지정합니다.
"include": [
"**/*",
"**/.client/**/*",
".react-router/types/**/*"
],
"compilerOptions": {
//컴파일 시 포함할 라이브러리 파일들의 목록
"lib": ["DOM", "DOM.Iterable", "ES2022"],
//import 안해도 사용가능
//전역으로 포함할 타입 선언 패키지(@types/...)를 지정합니다.
"types": ["node", "vite/client"],
//설명: 컴파일 후 생성되는 JavaScript 코드의 ECMAScript 버전을 지정합니다.
//예: "ES5", "ES6", "ES2017", "ESNext"
"target": "ES2022",
//TypeScript가 어떤 모듈 시스템을 사용하여 변환할지를 결정합니다.
//예를 들어, module을 "commonjs"로 설정하면, TypeScript는 require와 module.exports를 사용하는 방식으로 변환됩니다.
"module": "ES2022",
//allowJs & checkJs
//JavaScript 파일을 TypeScript 프로젝트에 포함할지 여부를 결정합니다.
"allowJs" : true,
//JavaScript 파일에 대해 타입 검사를 할지 여부를 결정합니다.
"checkJs" : true,
//"outDir" : 컴파일된 파일들이 출력될 디렉토리를 지정합니다.
"outDir" : ".dist"
//모듈 해석 방식을 설정합니다.
"moduleResolution": "bundler",
//JSX 코드가 컴파일될 방식을 지정합니다.
//"preserve": JSX 구문을 그대로 유지합니다. (후처리 필요)
//"react": React.createElement 호출로 변환 (구식 변환)
//"react-jsx": React 17+의 새로운 JSX 변환 방식
//"react-jsxdev": 개발용 React 17+ JSX 변환 방식
"jsx": "react-jsx",
//소스 파일들의 루트 디렉토리를 지정합니다.
"rootDirs": [".", "./.react-router/types"],
//비상대적 모듈(예: import { foo } from "foo";)의 경로 해석 시 기준이 되는 디렉토리를 지정합니다.
"baseUrl": ".",
//모듈 이름 별칭을 정의하여, 특정 모듈 경로를 다른 경로로 매핑할 수 있게 합니다.
"paths": {
"@/*": ["./src/*"],
"@assets/*": ["../../resources/_assets/*"]
},
//CommonJS 모듈을 ES 모듈처럼 default import 할 수 있도록 도와줍니다.
"esModuleInterop": true,
//true : (예: import, export, require) 번들러가 해석하도록
//컴파일러가 모듈 구문(예: import, export, require)을 원본 소스에 작성된 그대로 유지하도록 지시합니다.
"verbatimModuleSyntax": true,
//컴파일 시 JavaScript 출력 파일을 생성하지 않고, 타입 검사만 수행하도록 합니다.
"noEmit": true,
//JSON 파일을 모듈로 가져올 수 있도록 허용합니다.
"resolveJsonModule": true,
//파일 이름의 대소문자 일관성을 강제합니다.
"forceConsistentCasingInFileNames" : true
//타입 선언 파일(.d.ts)의 타입 검사를 건너뛰어 컴파일 속도를 향상시킵니다.
"skipLibCheck": true,
//strict: 모든 엄격한 타입 검사 옵션을 한 번에 활성화합니다.
//noImplicitAny: 암시적 any 타입을 사용하면 오류를 발생시킵니다.
//noImplicitThis: this가 암시적으로 any가 되는 경우 오류를 발생시킵니다.
//alwaysStrict: 모든 파일을 자동으로 strict 모드로 컴파일합니다.
"strict": true,
//소스맵 파일을 생성하여, 디버깅 시 원본 TypeScript 코드와 매핑할 수 있게 합니다.
"sourceMap" : true,
//타입 선언 파일(.d.ts)을 생성할지 여부를 지정합니다.
"declaration" : true,
//이 옵션을 활성화하면, TypeScript 파일(예: .ts나 .tsx)의 파일 확장자를 명시적으로 포함하여 import할 수 있습니다.
"allowImportingTsExtensions" : true,
//타입 선언 파일(.d.ts)에 대한 소스맵(.d.ts.map)을 생성합니다.
//라이브러리 배포 시 디버깅이나 IDE 내에서 원본 소스와 타입 선언 간 매핑을 제공하여 개발자 경험을 향상시킵니다.
"declarationMap" : true,
//증분 컴파일을 활성화하여 이전 컴파일 정보를 저장하고, 변경된 파일만 다시 컴파일하도록 하여 빌드 속도를 향상시킵니다.
"incremental" : true,
//증분 컴파일(incremental)을 사용할 때, 캐시 정보를 저장할 파일의 경로와 이름을 지정합니다.
"tsBuildInfoFile" : "node_modules/.tsbuildinfo",
//"auto" (기본값): 파일 내에 import/export 구문이 있으면 모듈로 인식합니다.
//"force": 모든 파일을 모듈로 취급합니다.
//"legacy": 이전 방식(암묵적 전역 스크립트 포함)을 사용합니다.
"moduleDetection" : "force" ,
//사용되지 않는 지역 변수(local variable)가 있으면 오류를 발생시킵니다.
"noUnusedLocals" :
//사용되지 않는 함수 매개변수(parameter)가 있으면 오류를 발생시킵니다.
"noUnusedParameters" :
//switch 문에서 case 구문 사이에 break, return 또는 throw 없이 코드가 넘어가는(fallthrough) 경우 오류를 발생시킵니다.
"noFallthroughCasesInSwitch" :
}
}
`classic`, `node`, `bundler` 모듈 해석 방식의 차이점
'WEB개발 > REACT' 카테고리의 다른 글
React 참고, 오류 (0) | 2025.02.20 |
---|---|
[환경구성] React개발을 위한 유용한 노드모듈 (node_modules) (0) | 2025.02.14 |
[React] Next, Typescript... 오류모음 (0) | 2024.01.26 |
[React] web성능 메트릭 (0) | 2023.12.18 |
[React] Typescript (1) | 2023.12.18 |