如何使用 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?