在vim中使用syntastic和tsc时,请使用tsconfig.json。

12
我想使用vimsyntastic插件,在编写TypeScript文件时实时进行错误检查,使用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这样的命令,这是对该标志的非法使用... 但我不明白为什么syntastic会忽略我的tsconfig.json中的设置 :(

2个回答

19

概要

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

详细信息

正如romainl他的回答中提到的,Typescript维基的"使用tsconfig.json"部分说明:

通过不带输入文件调用tsc,编译器会在当前目录开始并沿着父目录链搜索tsconfig.json 文件。

您可以通过在Vim中添加以下内容到您的.vimrc中,或者如果您使用Janus,则添加到.vimrc.after中,就能使用Syntastic实现此功能。这是根据LCD 047您的Syntastic问题#1628 的回答。

let g:syntastic_typescript_tsc_fname = ''

问题对我来说已经完美解决了。应该被接受的答案。 - Travis Kaufman
这个确实可以工作。但是一旦设置完成,我就不再收到错误标记了。但是如果我执行“Errors”,我仍然可以看到tsc的错误。 - Subash

2

维基页面提到:

使用tsconfig.json

  • 通过不传入任何输入文件来调用tsc,此时编译器会在当前目录开始,沿着父目录链搜索tsconfig.json文件。

  • 通过不传入任何输入文件和一个-project(或者简写为-p)命令行选项来调用tsc,并指定包含tsconfig.json文件的目录路径。

当在命令行中指定了输入文件时,tsconfig.json文件将被忽略。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接