@sveltek/eslint-config
Version:
Sveltek's config for ESLint.
130 lines (123 loc) • 2.79 kB
JavaScript
import globals from 'globals';
import jsPlugin from '@eslint/js';
import tsParser from '@typescript-eslint/parser';
import tsPlugin from '@typescript-eslint/eslint-plugin';
import sveltePlugin from 'eslint-plugin-svelte';
import svelteParser from 'svelte-eslint-parser';
export { defineConfig, globalIgnores } from 'eslint/config';
const jsConfig = {
files: ['**/*.{js,mjs,cjs}'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
...globals.es2021,
...globals.browser,
...globals.nodeBuiltin,
},
},
rules: {
...jsPlugin.configs.recommended.rules,
'no-unused-vars': ['error', { ignoreRestSiblings: true }],
'no-empty': ['error', { allowEmptyCatch: true }],
},
};
const tsConfig = {
files: ['**/*.{ts,mts,cts}'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parser: tsParser,
globals: {
...globals.es2021,
...globals.browser,
...globals.nodeBuiltin,
},
},
plugins: {
'@typescript-eslint': tsPlugin,
},
rules: {
...jsPlugin.configs.recommended.rules,
...tsPlugin.configs.recommended.rules,
'no-undef': 'off',
'no-empty': ['error', { allowEmptyCatch: true }],
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{ ignoreRestSiblings: true },
],
},
};
const svelteConfig = {
files: ['**/*.svelte'],
languageOptions: {
sourceType: 'module',
ecmaVersion: 'latest',
parser: svelteParser,
parserOptions: {
parser: tsParser,
},
globals: {
...globals.es2021,
...globals.browser,
...globals.nodeBuiltin,
},
},
plugins: {
svelte: sveltePlugin,
'@typescript-eslint': tsPlugin,
},
rules: {
...jsPlugin.configs.recommended.rules,
...tsPlugin.configs.recommended.rules,
...sveltePlugin.configs.recommended.at(-1).rules,
'no-undef': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{ ignoreRestSiblings: true },
],
},
};
const ignores = [
// Dirs
'**/.git/',
'**/.private/',
'**/.build/',
'**/.coverage/',
'**/.history/',
'**/.output/',
'**/.cache/',
'**/.temp/',
'**/.tmp/',
'**/.out/',
'**/.svelte-kit/',
'**/.vercel/',
'**/.netlify/',
'**/.next/',
'**/.nuxt/',
'**/node_modules/',
'**/dist/',
'**/build/',
'**/coverage/',
'**/functions/',
'**/public/',
'**/output/',
'**/cache/',
'**/temp/',
'**/tmp/',
'**/out/',
// Files
'**/.DS_Store',
'**/.env*',
'**/*-lock.*',
'**/*.lock',
'**/*.log*',
'**/*.min.*',
'**/*.d.ts',
];
const ignoresConfig = {
ignores,
};
export { ignores, ignoresConfig, jsConfig, svelteConfig, tsConfig };