module.exports = {
  root: true,
  env: {
    node: true
  },
  // prettier 放最后，自动关闭所有与 Prettier 冲突的格式规则
  extends: ['plugin:vue/essential', 'plugin:vue/strongly-recommended', '@vue/standard', 'prettier'],
  rules: {
    camelcase: 'off',
    'comma-dangle': 'off',
    'no-console': 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'generator-star-spacing': 'off',
    'no-mixed-operators': 0,
    'vue/max-attributes-per-line': 'off',
    'vue/attribute-hyphenation': 0,
    'vue/html-self-closing': 0,
    'vue/component-name-in-template-casing': 0,
    'vue/html-closing-bracket-spacing': 0,
    'vue/singleline-html-element-content-newline': 0,
    'vue/no-unused-components': 0,
    'vue/multiline-html-element-content-newline': 0,
    'vue/no-use-v-if-with-v-for': 0,
    'vue/html-closing-bracket-newline': 0,
    'vue/no-parsing-error': 0,
    'vue/name-property-casing': 0,
    'vue/multi-word-component-names': 0,
    'vue/no-mutating-props': 0,
    'no-tabs': 0,
    'multiline-ternary': 0,
    'object-shorthand': 0,
    quotes: [
      2,
      'single',
      {
        avoidEscape: true,
        allowTemplateLiterals: true
      }
    ],
    semi: [
      2,
      'never',
      {
        beforeStatementContinuationChars: 'never'
      }
    ],
    'no-delete-var': 2,
    'prefer-const': [
      2,
      {
        ignoreReadBeforeAssign: false
      }
    ],
    'template-curly-spacing': 'off',
    indent: 'off',
    // 必须使用全等: false
    eqeqeq: 0,
    // 可以使用!! 双重否定
    'no-extra-boolean-cast': 'off',
    // 关闭函数名后空格检查，跟随 Prettier 默认风格 function foo()
    'space-before-function-paren': 'off'
  },
  parserOptions: {
    parser: '@babel/eslint-parser'
  },
  overrides: [
    {
      files: ['**/__tests__/*.{j,t}s?(x)', '**/tests/unit/**/*.spec.{j,t}s?(x)'],
      env: {
        jest: true
      }
    }
  ]
}
