Search code examples
javascriptbabeljsvisual-studio-codeeslintecmascript-2016

VSCode Linter ES6 ES7 Babel linter


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.


Solution

  • 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: enter image description here

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