module.exports = { root: true, parser: 'babel-eslint', parserOptions: { sourceType: 'module' }, env: { browser: true, node: true }, extends: 'eslint:recommended', // required to lint *.vue files plugins: [ 'html' ], // check if imports actually resolve 'settings': { 'import/resolver': { 'webpack': { 'config': 'build/webpack.base.conf.js' } } }, // add your custom rules here 'rules': { // don't require .vue extension when importing // 'import/extensions': ['error', 'always', { // 'js': 'never', // 'vue': 'never' // }], // allow debugger during development 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, /* * Possible Errors */ // disallow unnecessary parentheses 'no-extra-parens': ['error', 'all', {'nestedBinaryExpressions': false}], // disallow negating the left operand of relational operators 'no-unsafe-negation': 'error', // enforce valid JSDoc comments 'valid-jsdoc': 'off', /* * Best Practices */ // enforce return statements in callbacks of array methods 'array-callback-return': 'error', // enforce consistent brace style for all control statements curly: ['error', 'multi-line'], // enforce consistent newlines before and after dots 'dot-location': ['error', 'property'], // enforce dot notation whenever possible 'dot-notation': 'error', // require the use of === and !== 'eqeqeq': ['error', 'smart'], // disallow the use of arguments.caller or arguments.callee 'no-caller': 'error', // disallow empty functions 'no-empty-function': 'error', // disallow unnecessary calls to .bind() 'no-extra-bind': 'error', // disallow unnecessary labels 'no-extra-label': 'error', // disallow leading or trailing decimal points in numeric literals 'no-floating-decimal': 'error', // disallow assignments to native objects or read-only global variables 'no-global-assign': 'error', // disallow the use of eval()-like methods 'no-implied-eval': 'error', // disallow the use of the __iterator__ property 'no-iterator': 'error', // disallow unnecessary nested blocks 'no-lone-blocks': 'error', // disallow multiple spaces 'no-multi-spaces': 'error', // disallow new operators with the String, Number, and Boolean objects 'no-new-wrappers': 'error', // disallow octal escape sequences in string literals 'no-octal-escape': 'error', // disallow the use of the __proto__ property 'no-proto': 'error', // disallow comparisons where both sides are exactly the same 'no-self-compare': 'error', // disallow throwing literals as exceptions 'no-throw-literal': 'error', // disallow unused expressions 'no-unused-expressions': 'error', // disallow unnecessary calls to .call() and .apply() 'no-useless-call': 'error', // disallow unnecessary concatenation of literals or template literals 'no-useless-concat': 'error', // disallow unnecessary escape characters 'no-useless-escape': 'error', // disallow void operators 'no-void': 'error', // require parentheses around immediate function invocations 'wrap-iife': 'error', // require or disallow “Yoda” conditions yoda: 'error', /* * Variables */ // disallow labels that share a name with a variable 'no-label-var': 'error', // disallow initializing variables to undefined 'no-undef-init': 'error', 'no-undef': 'off', // disallow the use of variables before they are defined 'no-use-before-define': 'error', /* * Node.js and CommonJS */ // disallow new operators with calls to require 'no-new-require': 'error', /* * Stylistic Issues */ // enforce consistent spacing inside array brackets 'array-bracket-spacing': 'error', // enforce consistent spacing inside single-line blocks 'block-spacing': 'error', // enforce consistent brace style for blocks 'brace-style': ['error', '1tbs', {'allowSingleLine': true}], // require or disallow trailing commas 'comma-dangle': 'error', // enforce consistent spacing before and after commas 'comma-spacing': 'error', // enforce consistent comma style 'comma-style': 'error', // enforce consistent spacing inside computed property brackets 'computed-property-spacing': 'error', // require or disallow spacing between function identifiers and their invocations 'func-call-spacing': 'error', // enforce consistent indentation indent: ['error', 2, {SwitchCase: 1}], // enforce the consistent use of either double or single quotes in JSX attributes 'jsx-quotes': 'error', // enforce consistent spacing between keys and values in object literal properties 'key-spacing': 'error', // enforce consistent spacing before and after keywords 'keyword-spacing': 'error', // enforce consistent linebreak style 'linebreak-style': 'error', // require or disallow newlines around directives 'lines-around-directive': 'error', // require constructor names to begin with a capital letter 'new-cap': 'off', // require parentheses when invoking a constructor with no arguments 'new-parens': 'error', // disallow Array constructors 'no-array-constructor': 'error', // disallow Object constructors 'no-new-object': 'error', // disallow trailing whitespace at the end of lines 'no-trailing-spaces': 'error', // disallow ternary operators when simpler alternatives exist 'no-unneeded-ternary': 'error', // disallow whitespace before properties 'no-whitespace-before-property': 'error', // enforce consistent spacing inside braces 'object-curly-spacing': ['error', 'always'], // require or disallow padding within blocks 'padded-blocks': ['error', 'never'], // require quotes around object literal property names 'quote-props': ['error', 'as-needed'], // enforce the consistent use of either backticks, double, or single quotes quotes: ['error', 'single'], // enforce consistent spacing before and after semicolons 'semi-spacing': 'error', // require or disallow semicolons instead of ASI // semi: ['error', 'never'], // enforce consistent spacing before blocks 'space-before-blocks': 'error', 'no-console': 'off', // enforce consistent spacing before function definition opening parenthesis 'space-before-function-paren': ['error', 'never'], // enforce consistent spacing inside parentheses 'space-in-parens': 'error', // require spacing around infix operators 'space-infix-ops': 'error', // enforce consistent spacing before or after unary operators 'space-unary-ops': 'error', // enforce consistent spacing after the // or /* in a comment 'spaced-comment': 'error', // require or disallow Unicode byte order mark (BOM) 'unicode-bom': 'error', /* * ECMAScript 6 */ // require braces around arrow function bodies 'arrow-body-style': 'error', // require parentheses around arrow function arguments 'arrow-parens': ['error', 'as-needed'], // enforce consistent spacing before and after the arrow in arrow functions 'arrow-spacing': 'error', // enforce consistent spacing around * operators in generator functions 'generator-star-spacing': ['error', 'after'], // disallow duplicate module imports 'no-duplicate-imports': 'error', // disallow unnecessary computed property keys in object literals 'no-useless-computed-key': 'error', // disallow unnecessary constructors 'no-useless-constructor': 'error', // disallow renaming import, export, and destructured assignments to the same name 'no-useless-rename': 'error', // require let or const instead of var 'no-var': 'error', // require or disallow method and property shorthand syntax for object literals 'object-shorthand': 'error', // require arrow functions as callbacks 'prefer-arrow-callback': 'error', // require const declarations for variables that are never reassigned after declared 'prefer-const': 'error', // disallow parseInt() in favor of binary, octal, and hexadecimal literals 'prefer-numeric-literals': 'error', // require rest parameters instead of arguments 'prefer-rest-params': 'error', // require spread operators instead of .apply() 'prefer-spread': 'error', // enforce spacing between rest and spread operators and their expressions 'rest-spread-spacing': 'error', // require or disallow spacing around embedded expressions of template strings 'template-curly-spacing': 'error', // require or disallow spacing around the * in yield* expressions 'yield-star-spacing': 'error' } }