-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patheslint.config.js
More file actions
72 lines (66 loc) · 1.72 KB
/
Copy patheslint.config.js
File metadata and controls
72 lines (66 loc) · 1.72 KB
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
import globals from 'globals'
import astro from 'eslint-plugin-astro'
import js from '@eslint/js'
import ts from 'typescript-eslint'
const {browser, node} = globals
const ASTRO_IGNORE = ['.astro/*']
const RULES_ALL = {
'eol-last': ['error', 'always']
, 'linebreak-style': ['error', 'unix']
}
const RULES_JS = {
'comma-style': ['error', 'first']
, 'comma-spacing': ['error', {before: false, after: true}]
, 'quotes': ['error', 'single', {
avoidEscape: true
, allowTemplateLiterals: true
}]
, 'quote-props': ['error', 'consistent-as-needed']
, 'semi': ['error', 'never']
, 'astro/semi': ['error', 'never']
, 'object-curly-spacing': ['error', 'never']
, 'array-bracket-spacing': ['error', 'never']
, 'computed-property-spacing': ['error', 'never']
}
const common_js = createFileTypeConfig('**/*.{js,cjs,astro}')
const module_js = createFileTypeConfig('**/*.{mjs,ts,tsx}')
const tailwind = createFileTypeConfig('**/tailwind.config.cjs')
/** @type {import('eslint').Linter.Config[]} */
export default [
{
files: ['**/*']
, ignores: [
'.astro/*'
, 'node_modules/*'
, 'dist/*'
]
, rules: RULES_ALL
}
, {...common_js}
, {...module_js}
, {...tailwind}
, js.configs.recommended
, ...ts.configs.recommended
, ...astro.configs.recommended
]
function createFileTypeConfig(files) {
const common = {
files: [`${files}`]
, ignores: ASTRO_IGNORE
, rules: RULES_JS
}
switch (files) {
case '**/*.{js,cjs,astro}': return {
...common
, languageOptions: {globals: {...browser}}
}
case '**/*.{mjs,ts,tsx}': return {
...common
, languageOptions: {sourceType: 'module'}
}
case '**/tailwind.config.cjs': return {
...common
, languageOptions: {globals: {...node}}
}
}
}