module.exports = { root: true, env: { node: true, browser: true, }, extends: ['plugin:vue/recommended', '@vue/airbnb'], rules: { 'no-multiple-empty-lines': 'off', 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'import/extensions': [ 'error', 'always', { js: 'never', }, ], 'max-len': [2, { code: 120, ignoreStrings: true, ignoreTemplateLiterals: true, ignoreUrls: true, ignorePattern: 'd="([\\s\\S]*?)"', }], 'array-bracket-newline': ['warn', { minItems: 3 }], 'array-element-newline': ['warn', { minItems: 3 }], 'vue/html-closing-bracket-newline': ['error', { singleline: 'never', multiline: 'never', }], 'vue/max-attributes-per-line': ['error', { singleline: 1, multiline: { max: 1, allowFirstLine: false, }, }], 'vue/component-name-in-template-casing': [ 'error', 'kebab-case', { registeredComponentsOnly: true, ignores: [], }, ], 'no-param-reassign': ['error', { props: true, ignorePropertyModificationsFor: [ 'state', // for vuex state 'acc', // for reduce accumulators 'e', // for e.return value ], }], }, parser: 'vue-eslint-parser', parserOptions: { parser: 'babel-eslint', }, overrides: [{ files: [ '**/__tests__/*.{j,t}s?(x)', '**/tests/unit/**/*.(spec|test).{j,t}s?(x)', '**/src/**/*.test.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)', '**/src/components/**/*.spec.[jt]s?(x)', '**/src/components/**/*.test.[jt]s?(x)', '**/src/directives/**/*.test.[jt]s?(x)', '**/src/filters/**/*.test.[jt]s?(x)', '**/src/helpers/**/*.test.[jt]s?(x)', '**/src/directives/**/*.spec.[jt]s?(x)', '**/src/filters/**/*.spec.[jt]s?(x)', '**/src/helpers/**/*.spec.[jt]s?(x)', ], env: { jest: true, }, }], };