How to use babel-module-resolver with vsCode and ESLint
This article is a small guide about how to configure an enviroment for babel-plugin-module-resolver. This plugin allows you use custom prefixes for import/export declarations in JS files. E.g. import A from 'com/A' can be treated as import A from ../../components/A.
- At first you should install the package npm i -D babel-plugin-module-resolver.
- Then add your map-config to your .babelrc file into the plugins section. E.g.:
plugins:
[
// ...
[
"babel-plugin-module-resolver",
{
"alias": {
"^com(.+)": "./src/com/\\1"
}
}
],
// ...
]
- Then install npm i -D eslint-import-resolver-babel-module package for ESLint. It allows ESLint to check your rewrited imports, It assumes that you already use eslint-plugin-import package. If you don't I recommend you to start using it. This package checks your import/export declarations, it's very convinient.
- Then change in your .eslint file:
{
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": { "jsx": true }
},
"settings": {
"import/resolver": { "babel-module": {} }
},
"plugins": [
// ...
"import"
],
// ...
}
- You also need to install babel-eslint if you didn't do it yet. And move its declaration from parseOptions to the root of the .eslintrc.
- babel-module part in .babelrc section is just {}, it's okay.
- Install ESLint plugin in vsCode
- Probably you'll need to write in your .vcode/settings.json something like next lines. They force vscode to change CWD (current directory) in the deamon of eslint plugin:
"eslint.workingDirectories": [
{
"directory": "./client",
"changeProcessCWD": true
}
],
- If you use path-intellisense plugin, you should consider configurate your mapping in .vscode/settings.json too.
- If you have any troubles, something doesn't work properly or doesn't work at all: Use force, Luke. Set vscode setting "eslint.trace.server": "verbose" and debug, debug, debug. I've spent on it several hours :(
Комментарии
Оставить комментарий
modules/comment
window._Comment_content_article_174 = new classes.Comment( '#comment_block_content_article_174',
{
type: 'content_article',
node_id: '174',
user: 1,
user_id: 0,
admin: 0,
view_time: null,
msg: {
empty: 'Комментарий пуст',
ask_link: 'Ссылка:',
ask_img: 'Ссылка на изображение:' }
});