如果我在不同的目录中用 tsconfig.json 调用它,Tsickle 会说 "Error No inputs were found in config file"

Tsickle says "Error No inputs were found in config file" if I call it with tsconfig.json in a different directory

挑逗
tsickle --externs=target/externs.js -- -p target/src

我收到这个错误:

Error No inputs were found in config file 'target/src/tsconfig.json'. Specified 'include' paths were '["./my/pathes/**/*.ts"]' and 'exclude' paths were '["some/other/thing"]'.

为什么?考虑到 tsickle 只是 tsc 的包装器,如果我执行等效的 tsc 调用,它会毫无问题地发生。在 tsickle-tsc 交互中一定有什么东西变坏了,但是什么?

根据 this Github 问题,tsickle 与打字稿之间存在一些不兼容问题。

可能是因为双方都不愿意承认是自己的错误,所以有none的人想改正。

解决方案是这样的:给 tsickle 的 tsconfig.json 应该有一个绝对路径,或者这个 tsconfig.json 中的 include: 应该使用绝对路径路径.

考虑到 .json 格式不是一个可配置的东西(例如,你不能简单地在其中提供 include: [ __dirname + '/my/lib/**.ts' ] 设置),可能更好的选择是简单地提供一个挠痒痒的绝对路径。

在我的例子中,我只是将 Gruntfile 中的 arguments: ['-p', 'src/tsconfig.json'] 扩展为 arguments: ['-p', __dirname + 'src/tsconfig.json']。如果您使用不同的构建工具,您的实际解决方案可能会有所不同,但这是重要的部分。