快速上手,tsconfig(文件选项)

1,159 阅读2分钟

如果一个目录下存在一个 tsconfig.json 文件,那么它意味着这个目录是 TypeScript 项目的根目录。一个项目可以通过以下方式之一来编译:

  • 不带任何输入文件的情况下调用 tsc,编译器会从当前目录开始去查找 tsconfig.json 文 件,逐级向上搜索父目录。
  • 不带任何输入文件的情况下调用 tsc,且使用命令行参数 --project(或 -p )指定一个包含 tsconfig.json 文件的目录。
  • 当命令行上指定了输入文件时,tsconfig.json 文件会被忽略。

如果 tsconfig.json 中没有任何配置,会按照默认配置编译当前目录下所有 ts 文件(tsd.tstsx)。

文件选项

files

编译器需要编译的单个文件列表(相对或绝对文件路径)。

{
  "files": ["src/a.ts"]
}

此时执行 tsc 命令,编译器会编译 src/a.ts 文件。

include

编译器需要编译的文件或者目录

{
  "include": ["src"]
}

此时执行 tsc 命令,编译器会编译 src 下的所有文件。

includes 配置支持 glob 通配符:\*?\*\*

{
  "include": ["src/*"]
}

此时执行 tsc 命令,编译器会编译 src 下一级目录的文件。

编译器会编译includefiles合并后的内容。

exclude

编译器需要排除的文件或者目录,默认会排除 node_modules 目录下的所有文件和声明文件。

{
  "exclude": ["src/lib"]
}
  • 如果 exclude 存在,exclude 配置优先级高于 filesincludes 配置
  • exclude 也配置支持 glob 通配符:\*?\*\*

extend

配置文件之间是可以继承的,我们可以抽离基础部分方便复用。

// tsconfig.base.json
{
  "files": ["src/a.ts"],
  "include": ["src"],
  "exclude": ["src/lib"]
}
// tsconfig.json
{
  "extends": "./tsconfig.base.json"
}

在主配置文件中,设置选项会覆盖掉继承文件中的相同的配置项。

compileOnSave

在保存文件时,编译器自动编译。

{
  "compileOnSave":true
}

然而,需要 TypeScript 1.8.4 及以上版本,且只有个别 IDE 支持:

  • Visual Studio 2015 with Update 3
  • JetBrains WebStorm
  • Atom with atom-typescript

笔者亲测,vscode 安装插件 TypeScript Auto Compiler 可行。

TypeScript 工程系列