// https://eslint.org/docs/user-guide/configuring

module.exports = {
  root: true,
  parser: 'vue-eslint-parser',
  parserOptions: {
    parser: '@babel/eslint-parser',
    ecmaVersion: 2021,
    ecmaFeatures: {
      jsx: true,
    },
  },
  env: {
    browser: true,
    node: true,
  },
  extends: [
    'standard',
    'plugin:vue/recommended',
  ],
  plugins: ['vue'],
  rules: {
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    semi: ['error', 'always'],
    'vue/multi-word-component-names': 'off',
    'vue/use-v-on-exact': 'off',
    'vue/no-v-html': 'off',
    'vue/component-api-style': ['error', ['options']],
    'vue/max-attributes-per-line': ['warn', {
      singleline: {
        max: 3,
      },
      multiline: {
        max: 1,
      },
    }],
    'comma-dangle': ['error', 'always-multiline'],

    // 兼容已有代码
    eqeqeq: 'off', // 强制使用===
    'no-useless-escape': 'off', // 禁用不必要的转义字符
    'no-control-regex': 'off', // 禁止在正则表达式中使用控制字符
    camelcase: 'off', // 变量命名使用驼峰式
    'no-sparse-arrays': 'off', // 禁用稀疏数组(数组中使用多个逗号) example：[,,]
    'no-case-declarations': 'off', // 在case和default中禁止声明变量
    'no-misleading-character-class': 'off', // 不允许在字符类语法中出现由多个代码点组成的字符
    'prefer-promise-reject-errors': 'off', // reject必须抛出错误
    'no-sequences': 'off', // 禁用逗号表达式
    'node/handle-callback-err': 'off', // 不要丢掉异常处理中err参数
    'vue/no-unused-vars': 'off', // 禁止v-for定义未使用变量
    'vue/attribute-hyphenation': 'off', // 属性使用连字符
    'vue/require-name-property': 'off', // 组件必须拥有name属性
    'vue/require-default-prop': 'off', // props必须有require或默认值
    'vue/attributes-order': 'off', // 组件attributes编写顺序
  },
};
