TypeScript(tsconfig schema)

seven2649·2022년 7월 7일
0

TypeScript Essentials

목록 보기
10/24
post-thumbnail

tsconfig schema


tsconfig.json파일의 전체적인 스키마를 알아볼 수 있는 사이트
http://json.schemastore.org/tsconfig

최상위 프로퍼티

  • compileOnSave
  • extends
  • compileOptions
  • files
  • include
  • exclude
  • references
  • typeAcquisition
  • tsNode

compileOnSave

{
  ...,
  "compileOnSaveDefinition": {
    "properties": {
      "compileOnSave": {
        "description": "Enable Compile-on-Save for this project.",
        "type": "boolean"
      }
    }
  },
  ...,
}

extends

  • 파일 (상대) 경로명: string
  • TypeScript 2.1 New Spec
{
  ...,
  "extendsDefinition": {
    "properties": {
      "extends": {
        "description": "Path to base configuration file to inherit from. Requires TypeScript version 2.1 or later.",
        "type": "string"
      }
    }
  },
  ...,
}
// in PROJECT/base.json
{
  "compilerOptions": {
    "strict": true
  }
}


// in PROJECT/tsconfig.json
{
  "extends": "./base.json",
}

TSConfig bases

여러가지 형태의 상속할 수 있는
부모설정들을 확인할 수 있다.
버전에 따라서 다른 설정들을 가져와서 사용해야하기 때문에 여러가지 형태의 TypeScript설정이 들어있다.

npm install --save-dev @tsconfig/deno

{
  "extends": "@tsconfig/deno/tsconfig.json",
  ...
}

files, include, exclude

  • 셋다 설정이 없으면, 전부다 컴파일
  • files
    • 상대 혹은 절대 경로의 리스트 배열입니다.
    • exclude 보다 쎕니다.
  • include, exclude
    • glob 패턴 (마치 .gitignore)
    • include
      • exclude 보다 약합니다.
      • *같은걸 사용하면, .ts / .tsx / .d.ts 만 include (allowJS)
    • exclude
      • 설정 안하면 4가지(node_modules, bower_components, jspm_packages, )를 default 로 제외합니다.
      • 은 항상 제외합니다. (include 에 있어도)
{
  ...,
  "filesDefinition": {
    "properties": {
      "files": {
        "description": "If no 'files' or 'include' property is present in a tsconfig.json, the compiler defaults to including all files in the containing directory and subdirectories except those specified by 'exclude'. When a 'files' property is specified, only those files and those specified by 'include' are included.",
        "type": "array",
        "uniqueItems": true,
        "items": {
          "type": "string"
        }
      }
    }
  },
  "excludeDefinition": {
    "properties": {
      "exclude": {
        "description": "Specifies a list of files to be excluded from compilation. The 'exclude' property only affects the files included via the 'include' property and not the 'files' property. Glob patterns require TypeScript version 2.0 or later.",
        "type": "array",
        "uniqueItems": true,
        "items": {
          "type": "string"
        }
      }
    }
  },
  "includeDefinition": {
    "properties": {
      "include": {
        "description": "Specifies a list of glob patterns that match files to be included in compilation. If no 'files' or 'include' property is present in a tsconfig.json, the compiler defaults to including all files in the containing directory and subdirectories except those specified by 'exclude'. Requires TypeScript version 2.0 or later.",
        "type": "array",
        "uniqueItems": true,
        "items": {
          "type": "string"
        }
      }
    }
  },
  ...,
}
profile
웹디자이너, 퍼블리셔 3년차 + 프론트엔드 신입

0개의 댓글