사소한 개발지식/JavaScript

TypeScript - tsconfig.json 설정하기 (setting)

2023. 11. 9. 23:17
목차
  1. tsconfig.json 설정하기
  2. 🔎 tsconfig.json 란
  3. 🔎 files
  4. 🔎 extends
  5. 🔎 include
  6. 🔎 exclude
  7. 🔎 compilerOptions
728x90
반응형

TypeScript

tsconfig.json 설정하기

 

🔎 tsconfig.json 란

tsconfig.json 란 타입스크립트(ts) 파일을 자바스크립트(js) 파일로 변환하는 컴파일 설정 정의해놓은 파일이다.

tsc --init

 

해당 명령어를 통해 tsconfig.json 파일을 자동으로 생성할 수도 있고 직접 tsconfig.json 파일을 만들어도 동일하게 동작한다. 위 명령어로 tsconfig.json 을 생성하면 모든 속성들이 나열되어 있고 주석으로 설명도 적혀있다.(영어) 이 후부터는 자주 사용되는 속성들에 대해 알아보자.

 

🔎 files

프로젝트에서 타입스크립트를 컴파일할 파일들의 목록들을 나타낸다. 이 아래에 include 와 exclude 속성이 나오는데 files 는 이 2개 속성보다 우선순위가 높다. files 가 지정되어 있지 않으면 include 와 exclude 속성을 통해 컴파일 대상을 선정한다.

{
  ...,
  "files": [
    "src/main.ts",
    "src/utils.ts",
    "src/types.d.ts"
  ],
  ...
}

 

🔎 extends

프로젝트에서 상속받을 다른 tsconfig 설정 파일을 나타낸다. 보통 extends 속성은 tsconfig.json 최상단에 위치한다. 

// configs/base.json
{
  ...,
  "compilerOptions": {
    "noImplicitAny": true,
    "strictNullChecks": true
  },
  ...
}

// tsconfig.json
{
  ...,
  "extends": "./configs/base",
  "files": [
    "main.ts",
    "supplemental.ts"
  ],
  ...
}

 

🔎 include

해당 프로젝트에서 컴파일할 파일 대상을 지정하는 속성으로 files 속성과 동일한 역할을 한다. 차이점은 include 는 와일드카드 패턴으로 파일을 지정한다는 점이다. 또한, files 가 exclude 속성보다 우선순위에 있다는 것과는 다르게 include 는 extend 보다 우선순위가 낮아 양쪽 모두 같은 파일이 적혀있다면 컴파일 대상에서 제외된다.

{
  ...,
  "include": [
    "src/*.ts", // src 디렉토리에 있는 모든 .ts 파일
    "test/**/*.spec.ts" // test 디렉토리와 그 하위 디렉토리에 있는 모든 .spec.ts 파일
  ],
  ...
}

 

와일드카드 패턴

  • * : 해당 디렉토리에 있는 모든 파일
  • ? : 해당 디렉토리에 있는 파일들의 이름 중 한 글자라도 포함하면 해당
  • ** : 해당 디렉토리 하위 디렉토의 모든 파일

 

🔎 exclude

해당 프로젝트에서 컴파일 대상에서 제외할 파일들을 와일드카드 패턴으로 지정하는 속성으로 include 의 반대되는 속이다.

{
  ...,
  "exclude": [
    "node_modules",
  ],
  ...
}

 

🔎 compilerOptions

해당 프로젝트의 타입스크립트 파일을 자바스크립트로 컴파일할 때 어떻게 변환할지에 대한 옵션들을 지정하는 속성이다. 

{
  "compilerOptions": {
    /* 기본 옵션
     * ------------------------------------------------------------------------------------------------------------------------------------------------ */
    "incremental": true,                      /* 증분 컴파일 활성화 */ 
    "target": "es5",                          /* ECMAScript 목표 버전 설정: 'ES3'(기본), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
    "module": "esnext",                       /* 생성될 모듈 코드 설정: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
    "lib": ["dom", "dom.iterable", "esnext"], /* 컴파일 과정에 사용될 라이브러리 파일 설정 */
    "allowJs": true,                          /* JavaScript 파일 컴파일 허용 */
    "checkJs": true,                          /* .js 파일 오류 리포트 설정 */
    "jsx": "react",                           /* 생성될 JSX 코드 설정: 'preserve', 'react-native', or 'react'. */
    "declaration": true,                      /* '.d.ts' 파일 생성 설정 */
    "declarationMap": true,                   /* 해당하는 각 '.d.ts'파일에 대한 소스 맵 생성 */
    "sourceMap": true,                        /* 소스맵 '.map' 파일 생성 설정 */
    "outFile": "./",                          /* 복수 파일을 묶어 하나의 파일로 출력 설정 */
    "outDir": "./dist",                       /* 출력될 디렉토리 설정 */
    "rootDir": "./",                          /* 입력 파일들의 루트 디렉토리 설정. --outDir 옵션을 사용해 출력 디렉토리 설정이 가능 */
    "composite": true,                        /* 프로젝트 컴파일 활성화 */
    "tsBuildInfoFile": "./",                  /* 증분 컴파일 정보를 저장할 파일 지정 */
    "removeComments": true,                   /* 출력 시, 주석 제거 설정 */
    "noEmit": true,                           /* 출력 방출(emit) 유무 설정 */
    "importHelpers": true,                    /* 'tslib'로부터 헬퍼를 호출할 지 설정 */
    "downlevelIteration": true,               /* 'ES5' 혹은 'ES3' 타겟 설정 시 Iterables 'for-of', 'spread', 'destructuring' 완벽 지원 설정 */
    "isolatedModules": true,                  /* 각 파일을 별도 모듈로 변환 ('ts.transpileModule'과 유사) */
   
    /* 엄격한 유형 검사 옵션
     * ------------------------------------------------------------------------------------------------------------------------------------------------ */
    "strict": true,                           /* 모든 엄격한 유형 검사 옵션 활성화 */
    "noImplicitAny": true,                    /* 명시적이지 않은 'any' 유형으로 표현식 및 선언 사용 시 오류 발생 */
    "strictNullChecks": true,                 /* 엄격한 null 검사 사용 */
    "strictFunctionTypes": true,              /* 엄격한 함수 유형 검사 사용 */
    "strictBindCallApply": true,              /* 엄격한 'bind', 'call', 'apply' 함수 메서드 사용 */
    "strictPropertyInitialization": true,     /* 클래스에서 속성 초기화 엄격 검사 사용 */
    "noImplicitThis": true,                   /* 명시적이지 않은 'any'유형으로 'this' 표현식 사용 시 오류 발생 */
    "alwaysStrict": true,                     /* 엄격모드에서 구문 분석 후, 각 소스 파일에 "use strict" 코드를 출력 */

    /* 추가 검사 옵션
     * ------------------------------------------------------------------------------------------------------------------------------------------------ */
    "noUnusedLocals": true,                   /* 사용되지 않은 로컬이 있을 경우, 오류로 보고 */
    "noUnusedParameters": true,               /* 사용되지 않은 매개변수가 있을 경우, 오류로 보고 */
    "noImplicitReturns": true,                /* 함수가 값을 반환하지 않을 경우, 오류로 보고 */
    "noFallthroughCasesInSwitch": true,       /* switch 문 오류 유형에 대한 오류 보고 */
 	"noUncheckedIndexedAccess": true,         /* 인덱스 시그니처 결과에 'undefined' 포함 */

    /* 모듈 분석 옵션
     * ------------------------------------------------------------------------------------------------------------------------------------------------ */
    "moduleResolution": "node",               /* 모듈 분석 방법 설정: 'node' (Node.js) 또는 'classic' (TypeScript pre-1.6). */
    "baseUrl": "./",                          /* 절대 경로 모듈이 아닌, 모듈이 기본적으로 위치한 디렉토리 설정 (예: './modules-name') */
    "paths": {},                              /* 'baseUrl'을 기준으로 상대 위치로 가져오기를 다시 매핑하는 항목 설정 */
    "rootDirs": [],                           /* 런타임 시 프로젝트 구조를 나타내는 로트 디렉토리 목록 */
    "typeRoots": [],                          /* 유형 정의를 포함할 디렉토리 목록 */
    "types": [],                              /* 컴파일 시 포함될 유형 선언 파일 입력 */
    "allowSyntheticDefaultImports": true,     /* 기본 출력(default export)이 없는 모듈로부터 기본 호출을 허용 (이 코드는 단지 유형 검사만 수행) */
    "esModuleInterop": true,                  /* 모든 가져오기에 대한 네임스페이스 객체 생성을 통해 CommonJS와 ES 모듈 간의 상호 운용성을 제공. 'allowSyntheticDefaultImports' 암시 */
    "preserveSymlinks": true,                 /* symlinks 실제 경로로 결정하지 않음 */
    "allowUmdGlobalAccess": true,             /* 모듈에서 UMD 글로벌에 접근 허용 */

    /* 소스맵 옵션
     * ------------------------------------------------------------------------------------------------------------------------------------------------ */
    "sourceRoot": "./",                       /* 디버거(debugger)가 소스 위치 대신 TypeScript 파일을 찾을 위치 설정 */
    "mapRoot": "./",                          /* 디버거가 생성된 위치 대신 맵 파일을 찾을 위치 설정 */
    "inlineSourceMap": true,                  /* 하나의 인라인 소스맵을 내보내도록 설정 */
    "inlineSources": true,                    /* 하나의 파일 안에 소스와 소스 코드를 함께 내보내도록 설정. '--inlineSourceMap' 또는 '--sourceMap' 설정이 필요 */

    /* 실험적인 기능 옵션
     * ------------------------------------------------------------------------------------------------------------------------------------------------ */
    "experimentalDecorators": true,           /* ES7 데코레이터(decorators) 실험 기능 지원 설정 */
    "emitDecoratorMetadata": true,            /* 데코레이터를 위한 유형 메타데이터 방출 실험 기능 지원 설정 */
    
    /* 고급 옵션
     * ------------------------------------------------------------------------------------------------------------------------------------------------ */
    "skipLibCheck": true,                     /* 선언 파일 유형 검사 스킵 */
    "forceConsistentCasingInFileNames": true  /* 동일한 파일에 대한 일관되지 않은 케이스 참조를 허용하지 않음 */
    
  }
}

 

참고
https://inpa.tistory.com/entry/TS-📘-타입스크립트-tsconfigjson-설정하기-총정리
728x90
반응형
저작자표시 (새창열림)
  1. tsconfig.json 설정하기
  2. 🔎 tsconfig.json 란
  3. 🔎 files
  4. 🔎 extends
  5. 🔎 include
  6. 🔎 exclude
  7. 🔎 compilerOptions
'사소한 개발지식/JavaScript' 카테고리의 다른 글
  • ESLint - .eslintrc 설정하기
  • Webpack - webpack.conifg.js 설정하기
  • Node.js - package.json 설정하기(setting)
  • JAVASCRIPT - 문자열 관련 메소드(String Method)
KimBY
KimBY
웹개발과 관련된 개발지식 모음
KimBY
B.Y Kim의 개발노트
KimBY
전체
오늘
어제
  • 분류 전체보기 (99)
    • 사소한 개발지식 (49)
      • PHP (2)
      • JavaScript (15)
      • NodeJS (0)
      • JAVA (2)
      • 잡?지식 (4)
      • 로드맵(FE) (22)
      • React (4)
    • 개발노트 (6)
      • 포트폴리오사이트 (6)
    • 프로그래머스 (33)
      • Level1(JS) (0)
      • Level2(JS) (33)
    • 백준알고리즘 (11)
      • 단계별로 풀어보기3(for문) (11)
    • 잡담 (0)

인기 글

최근 글

최근 댓글

태그

  • react
  • frontend
  • javascript
  • 백준알고리즘
  • FE로드맵
  • Level2
  • 로드맵
  • CSS
  • 프로그래머스
  • 단계별로풀어보기
hELLO · Designed By 정상우.
KimBY
TypeScript - tsconfig.json 설정하기 (setting)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.