如何在不修改tsconfig的前提下,结合tsconfig编译单个TypeScript文件
我太懂这种需求了——有时候就想快速编译某一个单独的.ts文件,既想用上已经配置好的tsconfig里的所有规则(比如target、module这些),又不想麻烦去修改tsconfig里的include/exclude,更不想为了这一个文件新建什么子项目配置。下面给你两种最实用的解决办法:
命令行直接搞定
平时你用tsc lab.ts的时候,TypeScript会进入文件模式,完全跳过tsconfig的读取,用默认的老版本JS配置编译,这就是为什么你得到的结果版本太老。要让它加载tsconfig同时只编译单个文件,只需要加个--project(或者简写-p)参数:
tsc --project tsconfig.json lab.ts
解释一下:--project tsconfig.json会让tsc进入项目模式,读取你当前的配置文件里的所有编译选项(比如target、lib、module这些),后面跟着的lab.ts会告诉它只编译这一个文件,完全忽略tsconfig里原来的include/exclude规则。完美契合你的需求——不用改tsconfig,直接用已有配置编译单个文件。
如果经常需要这么干,还可以在package.json里加个快捷脚本,省得每次敲长命令:
{ "scripts": { "compile-single": "tsc --project tsconfig.json" } }
之后编译单个文件只需要跑:
npm run compile-single lab.ts
VS Code里一键编译
如果你习惯用VS Code开发,也可以配置一个自定义任务,实现打开单个文件后一键用tsconfig编译:
- 按
Ctrl+Shift+P(Mac是Cmd+Shift+P),输入「Tasks: Configure Task」,回车选择「tsc: 编译 - tsconfig.json」 - 此时会生成
.vscode/tasks.json文件,把里面的args部分修改成这样:
"args": [ "--project", "${workspaceFolder}/tsconfig.json", "${file}" ]
- 保存后,打开你要编译的
lab.ts,按Ctrl+Shift+B,选择你刚才配置的这个任务,就能直接用tsconfig的配置编译当前打开的文件了。
另外,如果你想开启「保存时自动编译单个文件」,可以在VS Code的设置里(Ctrl+,)搜索「TypeScript: Compile On Save」,开启后再在settings.json里加上:
"typescript.compileOnSaveOptions": { "compileOnlyOpenFiles": true, "useTsconfigFromImports": true }
这样每次你保存lab.ts的时候,VS Code就会自动用当前的tsconfig编译它,完全不用手动敲命令。
内容来源于stack exchange

