VSCode Linter ES6 ES7 Babel linter

2019-01-08 10:02发布

问题:

How to use Visual Studio code to lint JavaScript file based on babel/ES7 stage-0 rules?

I only need to lint code. I already have webpack transpiling Js file.

回答1:

How I proceed:

  • install globally eslint : npm install -g eslint
  • install babel-eslint : npm install --save-dev babel-eslint
  • install eslint-plugin-react : npm install --save-dev eslint-plugin-react
  • create .eslintrc file in you root directory. here is my config:

{
"env": {
        "browser": true,
        "node": true,
        "es6": true,
        "jest": true,
        "jquery": true
    },
    "parser": "babel-eslint",
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module",
        "ecmaFeatures": {
            "arrowFunctions": true,
            "binaryLiterals": true,
            "blockBindings": true,
            "classes": true,
            "defaultParams": true,
            "destructuring": true,
            "forOf": true,
            "generators": true,
            "modules": true,
            "objectLiteralComputedProperties": true,
            "objectLiteralDuplicateProperties": true,
            "objectLiteralShorthandMethods": true,
            "objectLiteralShorthandProperties": true,
            "octalLiterals": true,
            "regexUFlag": true,
            "regexYFlag": true,
            "spread": true,
            "superInFunctions": true,
            "templateStrings": true,
            "unicodeCodePointEscapes": true,
            "globalReturn": true,
            "jsx": true,
            "experimentalObjectRestSpread": true
        }
    },
    "plugins": [
        "react"
    ],
    "rules": {
        "strict": 0
    }
}
  • In VSC, push F1, then write "extension", select "install extensions" and then, write "eslint" and validate. you will have to relaunch VSC
  • In VSC code, open the user parameters (settings.json) and write:

{
    //disable default javascript validator replaced by eslint
    "javascript.validate.enable" : false 
} 

Now, it should lint as wanted your ES7 code. If there is any issue with VSC reading eslint config, you can see it in the VSC console (Ctrls ShiftU).

As a result, ES7 code (spread operator in objects for example) is well linted:

PS: may be my .eslintrc uses some useless extra data for ES7 linting so feel free to remove it :)