eslint.config.js (58 lines of code) (raw):

import jsConfig from '@eslint/js'; import pluginVue from 'eslint-plugin-vue'; import globals from 'globals'; import { config, plugin, configs as tsConfigs } from 'typescript-eslint'; export default config( { ignores: [ 'dist/**', 'node_modules/**', '!src/.vuepress/**', 'src/.vuepress/.cache/**', 'src/.vuepress/.temp/**', 'src/.vuepress/public/**', ], }, { languageOptions: { ecmaVersion: 'latest', sourceType: 'module', parserOptions: { extraFileExtensions: ['.vue'], projectService: true, tsconfigRootDir: import.meta.dirname, }, }, }, jsConfig.configs.recommended, ...tsConfigs.strict, { files: ['**/*.ts', '**/*.cts', '**/*.mts'], plugins: { '@typescript-eslint': plugin, }, }, ...pluginVue.configs['flat/recommended'], { files: ['**/*.{js,cjs,mjs,jsx}'], ...tsConfigs.disableTypeChecked, }, { files: ['**/*.cjs'], rules: { '@typescript-eslint/no-require-imports': 'off', }, }, { files: ['**/*.vue'], rules: { 'vue/max-attributes-per-line': 'off', }, }, { files: ['deploy.cjs', 'deploy_staging.cjs'], languageOptions: { globals: globals.node, }, }, );