在vim中将tsconfig.json用于带有syntastic的tsc

在vim中将tsconfig.json用于带有syntastic的tsc,vim,typescript,syntastic,Vim,Typescript,Syntastic,我想使用syntastic插件vim在我使用tsc编写typescript文件时进行实时错误检查。我已经在vim中激活了tsc。关于如何让tsc使用最接近的父级tsconfig.json文件作为配置,有什么建议吗?我发现tsc在默认情况下不这样做,这使得syntastic配置困难。谢谢 编辑:我认为它没有使用tsconfig.json的原因是模块解析方法之类的选项似乎不起作用(“require”未定义),而且它也没有捕获tsconfig.json中的files属性中定义的我的定义文件 我解决此问

我想使用
syntastic
插件
vim
在我使用
tsc
编写typescript文件时进行实时错误检查。我已经在
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
忽略:(

使用tsconfig.json
  • 通过在没有输入文件的情况下调用
    tsc
    ,在这种情况下,编译器将从当前目录开始搜索
    tsconfig.json
    文件,并继续搜索父目录链

  • 通过调用没有输入文件的
    tsc
    ,以及指定包含
    tsconfig.json
    文件的目录路径的
    -project
    (或只是
    -p
    )命令行选项

在命令行上指定输入文件时,
tsconfig.json
文件将被忽略

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

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

Summary 将
让g:syntastic\u typescript\u tsc\u fname=''
添加到
.vimrc

细节 如中所述,Typescript wiki的部分说明:

通过在没有输入文件的情况下调用tsc,在这种情况下,编译器将从当前目录开始搜索
tsconfig.json
文件,并继续搜索父目录链

您可以通过在
.vimrc
.vimrc.after
中添加以下内容(如果使用)来完成此操作,如您的回答中所示:


为我完美地解决了这个问题。应该是公认的答案。这确实有效。但是,一旦设置,我就不再在错误上获得错误标记。但是,如果我执行
Errors
操作,我可以看到tsc错误。
let g:syntastic_typescript_tsc_fname = ''