-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheslint.config.js
84 lines (80 loc) · 2.22 KB
/
eslint.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// @ts-check
import { fixupPluginRules } from '@eslint/compat';
// @ts-expect-error 型定義ファイルなし
import nextPlugin from '@next/eslint-plugin-next';
import taiymeConfig from '@taiyme/eslint-config';
import tsEslintParser from '@typescript-eslint/parser';
import gitignore from 'eslint-config-flat-gitignore';
// @ts-expect-error 型定義ファイルなし
import tailwindPlugin from 'eslint-plugin-tailwindcss';
import globals from 'globals';
/**
* @typedef {import('eslint').Linter.Config} Config
* @typedef {import('eslint').ESLint.Plugin} Plugin
* @typedef {import('eslint').Linter.RulesRecord} Rules
*/
const files = ['**/*.{js,ts,jsx,tsx}'];
/** @type {import('eslint').Linter.Config[]} */
export default [
gitignore(),
{
name: 'taiy.me/ignores',
ignores: [
'patches/**',
'public/**',
'pnpm-lock.yaml',
],
},
{
name: 'taiy.me/setup',
languageOptions: {
globals: {
...globals.browser,
...globals.node,
React: 'readonly',
},
parser: tsEslintParser,
parserOptions: {
project: './tsconfig.json',
tsconfigRootDir: import.meta.dirname,
},
},
plugins: {
'@next/next': fixupPluginRules(/** @type {Plugin} */(nextPlugin)),
},
settings: {
tailwindcss: {
callees: ['clsx'],
config: './tailwind.config.js',
},
},
files,
},
...[
...taiymeConfig.configs.typescript,
...taiymeConfig.configs.react,
.../** @type {Config[]} */(tailwindPlugin.configs['flat/recommended']),
].map((config) => ({
...config,
files,
})),
{
name: 'taiy.me/rules',
rules: {
.../** @type {Rules} */(nextPlugin.configs.recommended.rules),
.../** @type {Rules} */(nextPlugin.configs['core-web-vitals'].rules),
'no-restricted-globals': ['error', '__dirname', '__filename', 'event', 'name'],
'@typescript-eslint/no-restricted-imports': ['error', {
paths: [{
name: 'next/link',
message: 'Please use \'next-view-transitions\' instead.',
}, {
name: 'punycode',
message: 'Please use \'punycode/\' instead.',
}],
}],
'@next/next/no-head-element': 'off',
},
files,
},
];