在 vim 中使用 tsconfig.json for tsc with syntastic

Use tsconfig.json for tsc with syntastic in vim

我想使用 vimsyntastic 插件在我使用 tsc 编写打字稿文件时为我提供实时错误检查。我已经在 vim 中激活了 tsc。关于如何让 tsc 使用最近父级的 tsconfig.json 文件作为配置的任何建议?我发现 tsc 默认情况下不这样做,这使得 syntastic 配置困难。谢谢!

编辑:我认为它没有使用 tsconfig.json 的原因是因为像模块解析方法这样的选项似乎不起作用("require" 未定义),而且它也没有捕获我在 tsconfig.json.

中的 files 属性中定义的定义文件

我解决这个问题的失败尝试:

let g:syntastic_typescript_checks=['tsc', 'tslint']

" typescript: find tsconfig.json
function! FindTypescriptRoot()
    return fnamemodify(findfile('tsconfig.json', './;'), ':h')
endfunction

let g:syntastic_typescript_tsc_args=['-p', FindTypescriptRoot()]

这导致 Syntastic 向我吐出这个错误:

app.ts|| TS5042: Option 'project' cannot be mixed with source files on a command line.

这可能是因为它是 运行 像 tsc -p /path/to/project/ app.ts 这样的命令,这是对该标志的非法使用...但是我不明白为什么我的设置在 tsconfig.json syntastic 被忽略了:(

The wiki says:

Using tsconfig.json

  • By invoking tsc with no input files, in which case the compiler searches for the tsconfig.json file starting in the current directory and continuing up the parent directory chain.

  • By invoking tsc with no input files and a -project (or just -p) command line option that specifies the path of a directory containing a tsconfig.json file.

When input files are specified on the command line, tsconfig.json files are ignored.

所以,基本上,您需要找到一种方法来告诉 Syntastic 不要 将文件名传递给 tsc

我建议从现在开始使用他们的问题跟踪器。

总结

let g:syntastic_typescript_tsc_fname = '' 添加到 .vimrc

详情

正如 Typescript wiki 的 romainl mentioned in , the "Using tsconfig.json" 部分所述:

By invoking tsc with no input files, in which case the compiler searches for the tsconfig.json file starting in the current directory and continuing up the parent directory chain.

您可以在 Vim using Syntastic by adding the following to your .vimrc, or .vimrc.after if you use Janus, as found in LCD 047's answer to your Syntastic issue #1628 中执行此操作:

let g:syntastic_typescript_tsc_fname = ''