tsconfig.json [Module]

juunini·2021년 8월 27일
1

tsconfig.json

목록 보기
1/8
post-thumbnail

최종 수정일 : 2021년 8월 28일

!주의 이 문서는 유익하지 않습니다(?).

목차

allowUmdGlobalAccess
baseUrl
module
moduleResolution
noResolve
paths
resolveJsonModule
rootDir
rootDirs
typeRoots
types

Options

allowUmdGlobalAccess

원본 링크

내부 모듈 파일에서 전역 UMD에 엑세스 할 수 있습니다.

웹 프로젝트처럼 import로 접근할 수 없는 프로젝트에서 특정 라이브러리(jQuery, Lodash같은)를 이용할 때 이 플래그를 사용합니다.

baseUrl

원본 링크

절대 경로를 이용하기 위해 기본 디렉토리를 지정합니다.

이 프로젝트에서 "baseUrl": "./" 을 사용하면, TypeScript는 tsconfig.json 과 같은 폴더에서 시작하는 파일을 찾습니다.

module

원본 링크

모듈 시스템을 설정합니다. 자세한 정보는 Modules 레퍼런스 페이지 참고하세요.
보통은 commonjs 를 사용합니다.

module 을 변경하면 moduleResolution 에 영향을 줍니다. 자세한건 Module Resolution 레퍼런스 페이지 를 참고하세요.

moduleResolution

원본 링크

Typescript 1.6 이하에서는 classic 이 사용되었습니다.
최신버전을 이용하신다면 classic 을 사용하실 필요가 없습니다.

AMD, UMD, System, ES6 를 사용시 classic.
그 외에는 node 입니다.

자세한건 Module Resolution 레퍼런스 페이지 를 참고하세요.

noResolve

원본 링크

기본적으로 TypeScript는 import<reference 지시문에 대한 초기 파일 세트를 검사하고 이러한 확인된 파일을 프로그램에 추가합니다.

noResolve 가 설정되어 있으면 이 프로세스가 발생하지 않습니다. 그러나, import 문은 여전히 유효한 모듈인지 확인하기 위해 검사되므로, 다른 방법으로 이것이 충족되는지 확인해야 합니다.

paths

원본 링크

baseUrl 의 경로로부터 import시 패키지의 위치를 다시 매핑하는 작업으로, handbookpaths 를 참고하세요.

paths 를 사용하면 require/import 에서 패키지의 경로를 직접 설정할 수 있습니다.

이렇게 하면 import "jquery" 가 가능합니다.

이렇게 하면 custom prefix로 코드를 찾을 수 있도록 지원합니다. codebase 안에서 긴 상대 경로를 피할 수 있습니다.

resolveJsonModule

원본 링크

확장자가 .json 인 파일을 import 할 수 있습니다.

rootDir

원본 링크

Default: tsconfig.json 파일이 있는 위치.
rootDir: "." 으로 설정할 시 tsconfig.json 파일이 있는 위치로 지정됩니다.

rootDir 에 지정한 경로 외부의 파일은 outDir 에 포함하지 않으므로 컴파일 시 필요한 파일들은 모두 rootDir 의 경로 아래에 위치해야 합니다.
rootDir 외부에 있는 파일을 import 하는 경우 컴파일 에러가 발생합니다.

rootDirs

원본 링크

rootDir 처럼 취급 할 경로들을 지정합니다.

typeRoots

원본 링크

기본값은 node_modules/@types 으로 간주되는 모든 패키지들을 포함합니다.
./node_modules/@types/, ../node_modules/@types/, ../../node_modules/@types/ 등의 패키지를 의미합니다.

typeRoots 를 지정하게 되면 해당 경로에 있는 패키지만을 컴파일 시 포함하게 됩니다.

위 설정은 ./typings, ./vendor/types 경로의 패키지들만 포함합니다.
./node_modules/@types 경로의 패키지는 포함하지 않습니다.
경로는 tsconfig.json 파일의 위치를 기준으로 합니다.

types

원본 링크

기본값은 node_modules/@types 으로 간주되는 모든 패키지들을 포함합니다.
./node_modules/@types/, ../node_modules/@types/, ../../node_modules/@types/ 등의 패키지를 의미합니다.

types 에 지정하면 해당 패키지만 global scope에 포함됩니다.

./node_modules/@types/node, ./node_modules/@types/jest, ./node_modules/@types/express 이 패키지만 global scope에 포함됩니다.
node_modules/@types/* 의 다른 패키지들은 포함되지 않습니다.

무슨 일이 일어나나요?

  • 프로젝트 global scope에 포함되지 않습니다. (예: node의 process, Jest의 expect)
  • 자동완성을 지원하지 않게 됩니다.

types 는 특정 패키지만을 대상으로 하고, typeRoots 는 경로를 대상으로 한다는 점에서 다릅니다.

profile
Full StackOverFlow

0개의 댓글