85 lines
2.4 KiB
JavaScript
85 lines
2.4 KiB
JavaScript
/** @type {import('eslint').Linter.Config} */
|
|
module.exports = {
|
|
root: true,
|
|
env: {
|
|
browser: true,
|
|
es2017: true,
|
|
node: true,
|
|
},
|
|
parserOptions: {
|
|
sourceType: 'module',
|
|
ecmaVersion: 2020,
|
|
project: './*/tsconfig.json',
|
|
extraFileExtensions: ['.svelte']
|
|
},
|
|
parser: '@typescript-eslint/parser',
|
|
plugins: [
|
|
'@typescript-eslint'
|
|
],
|
|
extends: [
|
|
'eslint:recommended',
|
|
'plugin:@typescript-eslint/recommended',
|
|
'plugin:svelte/recommended',
|
|
],
|
|
ignorePatterns: [
|
|
'*.d.ts',
|
|
'**/build/**', '**/node_modules/**', '**/.svelte-kit/**', '**/dist/**'
|
|
],
|
|
overrides: [
|
|
{
|
|
'files': ['*.svelte'],
|
|
'parser': 'svelte-eslint-parser',
|
|
'parserOptions': {
|
|
'parser': '@typescript-eslint/parser'
|
|
}
|
|
},
|
|
],
|
|
rules: {
|
|
/* Javascript / Typescript
|
|
========================================= */
|
|
// Use spaces over tabs
|
|
'no-tabs': 'error',
|
|
indent: ['error', 4, { SwitchCase: 1 }],
|
|
// Use single quote in javascript
|
|
quotes: ['error', 'single', {
|
|
avoidEscape: true,
|
|
allowTemplateLiterals: true
|
|
}],
|
|
// Avoid semicolons
|
|
semi: ['error', 'never'],
|
|
// Avoid ==
|
|
eqeqeq: 'error',
|
|
// Avoid trailing spaces
|
|
'no-trailing-spaces': ['error', { skipBlankLines: true }],
|
|
// Add a space between curlies
|
|
'object-curly-spacing': ['error', 'always'],
|
|
// Require a line at end of file
|
|
'eol-last': ['error', 'always'],
|
|
// Allow ts exceptions
|
|
'@typescript-eslint/ban-ts-comment': ['error', {
|
|
'ts-ignore': false,
|
|
'ts-nocheck': false,
|
|
'ts-expect-error': 'allow-with-description',
|
|
}],
|
|
// Ignore some no-used-vars
|
|
'@typescript-eslint/no-unused-vars': ['warn', {
|
|
'argsIgnorePattern': '^_',
|
|
}],
|
|
|
|
/* Svelte
|
|
========================================= */
|
|
// Use double quotes
|
|
'svelte/html-quotes': ['error', {
|
|
prefer: 'double',
|
|
dynamic: {
|
|
quoted: false,
|
|
avoidInvalidUnquotedInHTML: false,
|
|
}
|
|
}],
|
|
// Enable @html
|
|
'svelte/no-at-html-tags': 'off',
|
|
},
|
|
settings: {
|
|
},
|
|
}
|