- Published on
tsconfig
- Authors
- Name
- Luffy Yeon
tsconfig
tsconfig.json
파일을 기점으로 Typescript 프로젝트가 설정된 옵션들로 컴파일된다. tsc 커멘드 입력시 상위 디렉토리 체인으로 tsconfig.json
파일을 탐색해 나간다.
커맨드 옵션 -p 혹은 —project를 넣어 직접 tsconfig.json
설정도 가능하다.
- tsconfig.json을 fs 역방향으로 탐색하여 컴파일 실행
tsc
- 컴파일할 ts 파일 지정
tsc index.ts
- 디렉토리 하위의 ts 파일을 컴파일
tsc src/*.ts
- tsconfig.json 컴파일 설정으로 ts 파일을 컴파일
tsc —project tsconfig.json src/*.ts
compilerOptions
컴파일에 사용될 속성으로 생략시 컴파일 기본 값이 사용된다.
| Key | Description | Ex | | :-------------------: | :-------------------------------: | :-------------------------------: | --- | --- | | 기본 옵션 | | | | | | target | ECMAScript 대상 버전 설정 | es6 | | module | 빌드 결과의 모듈 방식 | commonjs | | lib | 컴파일에 포함될 라이브러리 지정 | ["es6", "dom"] | | allowJs | .js 파일도 컴파일 대상에 포함 | true | | checkJs | .js 파일의 오류 보고 | true | | jsx | .tsx 파일에서 JSX 코드를 지원 | 'preserve' 'react' 'react-native' | | outDir | 빌드 결과물이 위치할 폴더 | build/dist | | sourceMap | bundle 결과물의 .map.js 함께 생성 | true | | ... | | | | 엄격한 유형 검사 옵션 | | | | strict | 엄격한 유형 검사 옵션 활성화 | true | | strictNullChecks | 엄격한 null 검사를 활성화 | true | | noImplictAny | any 표현식 선언에서 오류 발생 | true | | ... | | | | 모듈 확인 옵션 | | | | typeRoots | 유형 정의를 포함 할 폴더 목록 | ["./typings"] | | types | 컴파일에 포함될 유형 선언 파일 | ["node", "lodash", "express"] |
typeRoots & types
기본적으로 유형 정의에 대한 @types
패키지는 컴파일에 모두 포함된다. typeRoots
를 지정할 경우 지정된 타입 정의만이 포함된다.
아래의 경우 typings
아래의 패키지만 포함된다. (./node_modules/@types
)가 포함되지 않음
{ "compilerOptions": { "typeRoots": ["./typings"] }}
types
를 지정하면 해당 패키지만 컴파일 목록에 포함된다.
아래와 같이 지정할 경우 . ./node_modules/@types/node
, ./node_modules/@types/lodash
, ./node_modules/@types/express
가 포함된다.
{ "compilerOptions": { "types": ["node", "lodash", "express"] }}
types
패키지는 index.d.ts
파일이 있는 폴더 또는 폴더에 types
필드를 가진 package.json
이 있는 폴더이다.
files
컴파일할 파일의 상대 또는 절대 파일 경로 목록을 가진다.
include
컴파일에 포함되는 파일 경로 목록을 가진다.
exclude
컴파일에서 제외할 파일 경로 목록을 가진다.
files
, include
, exclude
는 서로 상관관계를 가지며, include
는 exclude
에 포함되지 않는 파일만을 포함한다. (exclude
로 include
목록에 포함된 파일을 필터)
명시적으로 파일을 지정하는 files
에 지정된 파일들은 exclude
로 제외되지 않는다.
exclude
를 지정하지 않는다면 기본적으로 node_module
, bower_components
, jspm_packages
와 <outDir>
을 제외한다.
extends
tsconfig.json
에서 extends
는 다른 파일의 설정을 상속 받을 수 있도록 해준다. 기존 파일의 설정이 먼저 로드된 이후에 상속되는 설정 파일을 가져와 재정의 한다.
상속파일의 files
, include
, exclude
는 기본 설정을 덮어쓴다. 설정파일의 모든 상대적 경로는 경로가 원래 있던 설정 파일 기준으로 해석된다.
- configs/base.json
{ "compilerOptions": { "noImplicitAny": true, "strictNullChecks": true }}
- tsconfig.json
{ "extends": "./configs/base", "files": ["main.ts", "supplemental.ts"]}
complieOnSave
해당 속성은 IDE
에서 소스 저장 시 컴파일 해야하는 경우 지정된 tsconfig.json
에 대한 컴파일을 컴파일러에게 알려준다.
[Ref] :