splatoon3.ink/eslint.config.mjs
Matt Isenhower e6004154b9 Migrate ESLint to v9 with flat config
- eslint: 8.57.0 → 9.39.2
- eslint-plugin-vue: 9.23.0 → 10.8.0
- eslint-plugin-jsdoc: 48.2.1 → 62.5.5
- Replaced .eslintrc.cjs with eslint.config.mjs (flat config)
- Removed @vue/eslint-config-airbnb and eslint-plugin-import
- Added @eslint/js, globals, vue-eslint-parser, typescript as deps
- Removed stale eslint-disable comments for import/no-unresolved
- Simplified lint script (ESLint 9 handles extensions/ignores via config)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 11:02:09 -08:00

64 lines
1.6 KiB
JavaScript

import js from '@eslint/js';
import pluginVue from 'eslint-plugin-vue';
import pluginJsdoc from 'eslint-plugin-jsdoc';
import importAlias from '@dword-design/eslint-plugin-import-alias';
import globals from 'globals';
export default [
js.configs.recommended,
...pluginVue.configs['flat/recommended'],
pluginJsdoc.configs['flat/recommended'],
// Global settings
{
languageOptions: {
ecmaVersion: 2022,
globals: {
...globals.browser,
...globals.node,
},
},
rules: {
// ESLint
'indent': ['warn', 2, { 'SwitchCase': 1 }],
'comma-dangle': ['warn', 'always-multiline'],
'no-unused-vars': ['warn', { 'args': 'none' }],
'semi': 'warn',
'quotes': ['warn', 'single'],
'object-curly-spacing': ['warn', 'always'],
// Vue
'vue/multi-word-component-names': 'off',
'vue/require-default-prop': 'off',
'vue/max-attributes-per-line': ['warn', { singleline: { max: 4 } }],
'vue/html-self-closing': ['warn', { html: { void: 'always' } }],
// JSDoc
'jsdoc/require-jsdoc': 'off',
'jsdoc/require-returns': 'off',
'jsdoc/require-param-description': 'off',
},
},
// Import alias for src files
{
files: ['src/**'],
plugins: {
'@dword-design/import-alias': importAlias.configs.recommended.plugins['@dword-design/import-alias'],
},
rules: {
'@dword-design/import-alias/prefer-alias': ['warn', { 'alias': {
'@': './src',
} }],
},
},
// Ignored files
{
ignores: [
'dist/**',
'src/assets/i18n/index.mjs',
],
},
];