【问题标题】:How to specify custom --rulesdir for eslint in vim editor如何在 vim 编辑器中为 eslint 指定自定义 --rulesdir
【发布时间】:2015-05-27 12:35:40
【问题描述】:

我已经在 vim 中安装了syntastic plugin,并在 npm 中全局安装了 eslint。下面是我的 .vimrc 的 sn-p 用于合成配置:

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 选项仅在命令行中可用。

【问题讨论】:

  • 你试过直接运行eslint吗?
  • 打开调试看看发生了什么::let g:syntastic_debug=3,运行检查器,然后运行:mes。如果您无法弄清楚,请发帖至issue tracker
  • @romainl,我试过直接运行eslint,报错:Cannot find definition of xxx rule。问题是 .eslintrc 中有一些自定义规则,而 eslint 找不到它们的定义。我四处搜索,发现 eslint 命令行可以有选项 --rulesdir 来指定自定义规则目录。但是vim正在运行eslint checker,我不知道如何让vim告诉eslint这个项目正确的规则目录。知道如何解决这个问题吗?

标签: javascript vim eslint


【解决方案1】:

编辑:

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 设置为其基目录。

【讨论】:

  • 嗨,我不想把它放在 .vimrc 中,因为对于每个项目,--rulesdir 路径可能不同。
  • 那很好,如果我想直接在我的.vimrc中内联一些规则,我该怎么做?
猜你喜欢
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多