Ian McNally

My es lint configuration

August 22, 2015

I started using ESLint on a project recently. It took me some time to get over JSHint, but I’m really enjoying ESLint’s plugins, especially for linting React and JSX.

I spent some time creating my own .eslintrc file, and if you want to save yourself some precious time, here’s it is (also on github):

{
    "rules": {
        "indent": [
            2, 2
        ],
        "quotes": [
            2,
            "single"
        ],
        "linebreak-style": [
            2,
            "unix"
        ],
        "semi": [
            2,
            "never"
        ],
        "func-style": [2, "expression"],
        "new-parens": 2,
        "no-array-constructor": 2,
        "no-mixed-spaces-and-tabs": 2,
        "no-multiple-empty-lines": 2,
        "no-var": 2,
        "no-var": 2,
        "prefer-template": 2,
        "constructor-super": 2,
        "no-this-before-super": 2,
        "object-shorthand": 2,
        "prefer-arrow-callback": 2,
        "prefer-const": 2,
        "prefer-spread": 2,
        "prefer-reflect": 2,
        "no-console": 2,
        "no-constant-condition": 2,
        "no-debugger": 2,
        "no-dupe-args": 2,
        "no-dupe-keys": 2,
        "no-duplicate-case": 2,
        "no-empty-character-class": 2,
        "no-empty": 2,
        "no-ex-assign": 2,
        "no-extra-boolean-cast": 2,
        "no-extra-semi": 2,
        "no-func-assign": 2,
        "no-inner-declarations": 2,
        "no-invalid-regexp": 2,
        "no-irregular-whitespace": 2,
        "no-negated-in-lhs": 2,
        "no-obj-calls": 2,
        "no-regex-spaces": 2,
        "no-sparse-arrays": 2,
        "no-unreachable": 2,
        "use-isnan": 2,
        "valid-typeof": 2,
        "dot-notation": 2,
        "eqeqeq": 2,
        "no-alert": 2,
        "no-caller": 2,
        "no-else-return": 2,
        "no-eval": 2,
        "no-extend-native": 2,
        "no-extra-bind": 2,
        "no-fallthrough": 2,
        "no-floating-decimal": 2,
        "no-implicit-coercion": 2,
        "no-implied-eval": 2,
        "no-invalid-this": 2,
        "no-iterator": 2,
        "no-labels": 2,
        "no-lone-blocks": 2,
        "no-loop-func": 2,
        "no-multi-spaces": 2,
        "no-native-reassign": 2,
        "no-new-wrappers": 2,
        "no-param-reassign": 2,
        "no-proto": 2,
        "no-redeclare": 2,
        "no-return-assign": 2,
        "no-script-url": 2,
        "no-self-compare": 2,
        "no-sequences": 2,
        "no-useless-call": 2,
        "no-void": 2,
        "no-warning-comments": 2,
        "no-with": 2,
        "vars-on-top": 2,
        "wrap-iife": 2,
        "yoda": [2, "never"],
        "no-undef": 2,
        "no-delete-var": 2,
        "no-unused-vars": 2,
        "arrow-parens": [2, "always"],
        "arrow-spacing": 2
    },
    "env": {
        "es6": true,
        "browser": true,
        "node": true,
        "mocha": true
    },
    "globals": {
        "chai": true,
        "expect": true,
        "sinon": true
    },
    "extends": "eslint:recommended",
    "ecmaFeatures": {
        "jsx": true,
        "experimentalObjectRestSpread": true,
        "modules": true,
        "blockBindings": true
    },
    "plugins": [
        "react"
    ]
}

Happy linting!


Ian McNally

Hey, I'm Ian. I build websites and write about what I learn as I go. Follow me on Twitter.