Fix #421 Automatically detect create-react-app paths

This commit is contained in:
w0rp 2017-03-29 00:21:27 +01:00
parent 4b9b4e3338
commit a4220b99a6
6 changed files with 67 additions and 0 deletions

View file

@ -15,6 +15,17 @@ function! ale_linters#javascript#eslint#GetExecutable(buffer) abort
return g:ale_javascript_eslint_executable return g:ale_javascript_eslint_executable
endif endif
" Look for the kinds of paths that create-react-app generates first.
let l:executable = ale#util#ResolveLocalPath(
\ a:buffer,
\ 'node_modules/eslint/bin/eslint.js',
\ ''
\)
if !empty(l:executable)
return l:executable
endif
return ale#util#ResolveLocalPath( return ale#util#ResolveLocalPath(
\ a:buffer, \ a:buffer,
\ 'node_modules/.bin/eslint', \ 'node_modules/.bin/eslint',

0
test/eslint-test-files/node_modules/.bin/eslint generated vendored Normal file
View file

View file

View file

View file

@ -0,0 +1,56 @@
Before:
let g:ale_javascript_eslint_executable = 'eslint_d'
silent! cd /testplugin/test
let g:dir = getcwd()
runtime ale_linters/javascript/eslint.vim
After:
let g:ale_javascript_eslint_executable = 'eslint'
let g:ale_javascript_eslint_use_global = 0
silent execute 'cd ' . g:dir
unlet! g:dir
call ale#linter#Reset()
Execute(create-react-app directories should be detected correctly):
new eslint-test-files/react-app/subdir/testfile.js
AssertEqual
\ g:dir . '/eslint-test-files/react-app/node_modules/eslint/bin/eslint.js',
\ ale_linters#javascript#eslint#GetExecutable(bufnr(''))
:q
Execute(use-global should override create-react-app detection):
let g:ale_javascript_eslint_use_global = 1
new eslint-test-files/react-app/subdir/testfile.js
AssertEqual
\ 'eslint_d',
\ ale_linters#javascript#eslint#GetExecutable(bufnr(''))
:q
Execute(other app directories should be detected correctly):
new eslint-test-files/other-app/subdir/testfile.js
AssertEqual
\ g:dir . '/eslint-test-files/node_modules/.bin/eslint',
\ ale_linters#javascript#eslint#GetExecutable(bufnr(''))
:q
Execute(use-global should override other app directories):
let g:ale_javascript_eslint_use_global = 1
new eslint-test-files/other-app/subdir/testfile.js
AssertEqual
\ 'eslint_d',
\ ale_linters#javascript#eslint#GetExecutable(bufnr(''))
:q