如何使用 tsconfig.json 中的设置从命令行键入检查单个文件?

Posted

技术标签:

【中文标题】如何使用 tsconfig.json 中的设置从命令行键入检查单个文件?【英文标题】:How to type check a single file from command line, using the setting in tsconfig.json? 【发布时间】:2019-04-06 06:28:24 【问题描述】:

通常我运行tsc -p ./tsconfig.json,它会检查./src 文件夹中相对于tsconfig 的所有文件。

但如果我运行tsc -p ./tsconfig.json src/specific-file.ts,它会抱怨

错误 TS5042:选项“项目”不能与命令行上的源文件混合。

所以,如果我删除该选项并运行tsc src/specific-file.ts,它会检查文件,但它不使用 tsconfig 中的任何设置(因为我没有指定 tsconfig 文件?)。

如何在单个文件上运行 tsc 并使用 tsconfig 中原本会在整个项目中使用的设置?

【问题讨论】:

【参考方案1】:

检查以确保您的绝对路径不包含任何空格,如果仍然出现错误,可能仅仅是因为tsconfig.json 用于配置项目,而命令行参数用于文件。

【讨论】:

没有空格。从 tsconfig.xml 复制我已经在使用的命令行参数是多余的(并且可能容易出错)。能够重用配置会很好,除了在命令行中指定文件(出于自动化目的)。【参考方案2】:

除了使用 TypeScript 编译器 API 编写自己的命令行工具之外,我不知道有什么好的解决方案。您可以考虑两种更简单的方法:

    编写一个脚本,生成一个临时的tsconfig.json 文件,该文件扩展您的原始tsconfig.json 并将files 设置为您想要的文件。但是,如果其他文件包含对您指定的文件进行类型检查所需的全局声明,则其他文件可能无法加载,因此这种方法可能不起作用。

    编写一个脚本,在整个项目上运行tsc 并过滤输出,如this answer 所示。但是,如果您关心的是性能,这将无济于事。

【讨论】:

这基本上就是我的想法,是的,我担心的是 git precommit 钩子强制键入的性能。现在,我只是对整个项目进行类型检查,但我认为如果我提交一个文件,我只需要检查它(它是依赖图和全局类型)。 确定哪些文件可能因更改给定文件而引入错误并非易事。 好点。在这种情况下,我们需要遍历依赖树,我们将如何做到这一点?我想首先遍历整个项目树。 (只是一个想法,但也许TS可以在项目或某处缓存依赖图,以使其能够向上)

以上是关于如何使用 tsconfig.json 中的设置从命令行键入检查单个文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在tsconfig.json中设置/应用默认ES进行编译?

未找到 tsconfig.json 中的 TypeScript 路径别名

如何为不在@types 中的类型配置 tsconfig.json?

如何生成与 package.json + tsc 命令匹配的 tsconfig.json?

tsconfig.json 中的 **/node_modules/* 是啥意思?

打字稿 2.0。 tsconfig.json 中的“类型”字段