Files
vue-ts-example/eslint.config.js
mini2024 b0cd8b7c61
All checks were successful
/ playwright (push) Successful in 1m27s
/ depcheck (push) Successful in 1m38s
/ build-and-deploy-to-vercel (push) Successful in 2m44s
feat: 添加 eslint-plugin-perfectionist 插件,优化导入排序规则
2025-01-21 23:05:11 +08:00

66 lines
1.7 KiB
JavaScript

import { includeIgnoreFile } from '@eslint/compat';
import pluginVitest from '@vitest/eslint-plugin';
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting';
import vueTsEslintConfig from '@vue/eslint-config-typescript';
import oxlint from 'eslint-plugin-oxlint';
import perfectionist from 'eslint-plugin-perfectionist';
import pluginVue from 'eslint-plugin-vue';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const gitignorePath = path.resolve(__dirname, '.gitignore');
/**
* @type import('eslint').Linter.Config[]
*/
export default [
includeIgnoreFile(gitignorePath), // oxlint . --fix -D correctness --ignore-path .gitignore
{
name: 'app/files-to-lint',
files: ['**/*.{ts,mts,tsx,vue}'],
},
{
name: 'app/files-to-ignore',
ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
},
...pluginVue.configs['flat/essential'],
...vueTsEslintConfig({ supportedScriptLangs: { ts: true, tsx: true, js: true, jsx: true } }),
{
...pluginVitest.configs.recommended,
files: ['src/**/__tests__/*'],
},
oxlint.configs['flat/recommended'],
skipFormatting,
{
rules: {
'vue/multi-word-component-names': 'off',
'@typescript-eslint/no-explicit-any': 'off',
// 'vue/block-lang': [
// 'error',
// {
// script: {
// allowNoLang: true,
// },
// },
// ],
},
},
// https://perfectionist.dev/guide/getting-started
{
plugins: {
perfectionist,
},
rules: {
'perfectionist/sort-imports': ['error'],
},
},
];