module.exports = { root: true, env: { browser: true, es2021: true, node: true, }, extends: [ 'eslint:recommended', 'plugin:vue/vue3-recommended', ], parserOptions: { ecmaVersion: 'latest', sourceType: 'module', }, plugins: ['vue'], rules: { // Vue-specific rules 'vue/multi-word-component-names': 'off', 'vue/no-v-html': 'warn', 'vue/require-default-prop': 'off', 'vue/require-explicit-emits': 'off', 'vue/no-setup-props-destructure': 'off', // General rules 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], 'no-undef': 'error', // Best practices 'eqeqeq': ['error', 'always'], 'curly': ['error', 'all'], 'prefer-const': 'warn', 'no-var': 'error', // Spacing and formatting 'indent': ['error', 2, { SwitchCase: 1 }], 'quotes': ['error', 'single', { avoidEscape: true }], 'semi': ['error', 'never'], 'comma-dangle': ['error', 'only-multiline'], 'arrow-spacing': 'error', 'space-before-function-paren': ['error', { anonymous: 'always', named: 'never', asyncArrow: 'always', }], }, globals: { defineProps: 'readonly', defineEmits: 'readonly', defineExpose: 'readonly', withDefaults: 'readonly', }, }