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, Vite, Typescript 참고, 오류 (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 |