Javascript 如何在vim编辑器中为eslint指定自定义--rulesdir

Javascript 如何在vim编辑器中为eslint指定自定义--rulesdir,javascript,vim,eslint,Javascript,Vim,Eslint,我已在全球范围内安装了vim,并在npm中安装了eslint。下面是syntastic配置的my.vimrc代码片段: set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_javascript_checkers = ["eslint"] let g:syntastic_always_populate_loc_list = 1 l

我已在全球范围内安装了vim,并在npm中安装了eslint。下面是syntastic配置的my.vimrc代码片段:

set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

let g:syntastic_javascript_checkers = ["eslint"]
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
下面是我运行的结果:SyntasticInfo javascript

Syntastic version: 3.6.0-64 (Vim 704, CYGWIN_NT-6.3)
Info for filetype: javascript
Global mode: active
Filetype javascript is active
Available checker: eslint
Currently enabled checker: eslint
假设我有以下项目结构,在
.eslintrc
中激活了一些自定义规则,这些规则的定义在
.eslintrules
目录中:

xxx_project:
   |--.eslintrc
   |--.eslintrules
        |-- rule1.js
        |-- rule2.js
        |-- ...
   |-- src
        |-- abc.js
每次我在某个源文件上运行:SyntasticCheck时,都不会发生任何事情。所以我尝试直接在命令行中对一些js文件运行eslint。出现一些错误,表明找不到某些自定义规则的定义

所以我认为eslint已经找到了配置文件,但它不知道--rulesdir在哪里

有人能帮忙吗?据我所知,--rulesdir选项仅在命令行中可用。

编辑:

function! ESLintArgs()
    let rules = findfile('.eslintrules', '.;')
    return rules != '' ? '--rulesdir ' . shellescape(fnamemodify(rules, ':p:h')) : ''
endfunction

autocmd FileType javascript let b:syntastic_javascript_eslint_args = ESLintArgs()

这将尝试查找名为
.eslintrules
的文件,并将
--ruledir
设置为其基本目录。

是否尝试直接运行
eslint
?打开调试以了解发生了什么:
:让g:syntastic_debug=3
,运行检查程序,然后运行
:mes
。如果您无法在发布到@romainl后找到它,我尝试直接运行eslint,出现错误:找不到xxx规则的定义。问题是中有一些自定义规则。eslintrc和eslint找不到它们的定义。我四处搜索,发现eslint命令行可以有选项--rulesdir来指定自定义规则目录。但是vim正在运行eslint checker,我不知道如何让vim告诉eslint这个项目的正确规则目录。知道如何解决这个问题吗?嗨,我不想把它放在.vimrc中,因为对于每个项目,--rulesdir路径都可能不同。这很好,如果我想在我的
.vimrc
中直接内联一些规则,我该怎么办?