chore: Configureer linter (ESLint)
This commit is contained in:
parent
977b49f659
commit
df2f26482c
3 changed files with 132 additions and 30 deletions
11
backend/eslint.config.ts
Normal file
11
backend/eslint.config.ts
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import globals from 'globals';
|
||||||
|
import rootConfig from '../eslint.config';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
...rootConfig,
|
||||||
|
{
|
||||||
|
languageOptions: {
|
||||||
|
globals: globals.node,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
82
eslint.config.ts
Normal file
82
eslint.config.ts
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
import pluginJs from '@eslint/js';
|
||||||
|
import tseslint from 'typescript-eslint';
|
||||||
|
import prettierConfig from 'eslint-config-prettier';
|
||||||
|
|
||||||
|
import { includeIgnoreFile } from '@eslint/compat';
|
||||||
|
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');
|
||||||
|
|
||||||
|
export default [
|
||||||
|
pluginJs.configs.recommended,
|
||||||
|
...tseslint.configs.recommended,
|
||||||
|
prettierConfig,
|
||||||
|
includeIgnoreFile(gitignorePath),
|
||||||
|
{
|
||||||
|
ignores: ['**/dist/**', '**/.node_modules/**', '**/coverage/**'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
languageOptions: {
|
||||||
|
ecmaVersion: 'latest',
|
||||||
|
sourceType: 'module',
|
||||||
|
},
|
||||||
|
linterOptions: {
|
||||||
|
reportUnusedInlineConfigs: 'error',
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'no-await-in-loop': 'warn',
|
||||||
|
'no-constructor-return': 'error',
|
||||||
|
'no-duplicate-imports': 'error',
|
||||||
|
'no-inner-declarations': 'error',
|
||||||
|
'no-self-compare': 'error',
|
||||||
|
'no-template-curly-in-string': 'error',
|
||||||
|
'no-unmodified-loop-condition': 'warn',
|
||||||
|
'no-unreachable-loop': 'warn',
|
||||||
|
'no-use-before-define': 'error',
|
||||||
|
'no-useless-assignment': 'error',
|
||||||
|
|
||||||
|
'arrow-body-style': ['warn', 'always'],
|
||||||
|
'block-scoped-var': 'warn',
|
||||||
|
camelcase: 'warn',
|
||||||
|
'capitalized-comments': 'warn',
|
||||||
|
'consistent-return': 'warn',
|
||||||
|
'consistent-this': 'error',
|
||||||
|
curly: 'error',
|
||||||
|
'default-case': 'error',
|
||||||
|
'default-case-last': 'error',
|
||||||
|
'default-param-last': 'error',
|
||||||
|
'dot-notation': 'warn',
|
||||||
|
eqeqeq: 'error',
|
||||||
|
'func-names': 'warn',
|
||||||
|
'func-style': ['warn', 'declaration'],
|
||||||
|
'grouped-accessor-pairs': ['warn', 'getBeforeSet'],
|
||||||
|
'guard-for-in': 'warn',
|
||||||
|
'logical-assignment-operators': 'warn',
|
||||||
|
'max-classes-per-file': 'warn',
|
||||||
|
'no-alert': 'error',
|
||||||
|
'no-array-constructor': 'warn',
|
||||||
|
'no-bitwise': 'warn',
|
||||||
|
'no-console': 'warn',
|
||||||
|
'no-continue': 'warn',
|
||||||
|
'no-else-return': 'warn',
|
||||||
|
'no-empty-function': 'warn',
|
||||||
|
'no-eq-null': 'error',
|
||||||
|
'no-eval': 'error',
|
||||||
|
'no-extend-native': 'error',
|
||||||
|
'no-extra-label': 'error',
|
||||||
|
'no-implicit-coercion': 'warn',
|
||||||
|
'no-implied-eval': 'error',
|
||||||
|
'no-invalid-this': 'error',
|
||||||
|
'no-iterator': 'error',
|
||||||
|
'no-label-var': 'warn',
|
||||||
|
'no-labels': 'warn',
|
||||||
|
'no-loop-func': 'error',
|
||||||
|
'no-multi-assign': 'error',
|
||||||
|
'no-nested-ternary': 'error',
|
||||||
|
'no-object-constructor': 'error',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
|
@ -1,36 +1,45 @@
|
||||||
import pluginVue from 'eslint-plugin-vue'
|
import pluginVue from 'eslint-plugin-vue';
|
||||||
import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
|
import {
|
||||||
import pluginVitest from '@vitest/eslint-plugin'
|
defineConfigWithVueTs,
|
||||||
import pluginPlaywright from 'eslint-plugin-playwright'
|
vueTsConfigs,
|
||||||
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
|
} from '@vue/eslint-config-typescript';
|
||||||
|
import pluginVitest from '@vitest/eslint-plugin';
|
||||||
|
import pluginPlaywright from 'eslint-plugin-playwright';
|
||||||
|
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting';
|
||||||
|
import rootConfig from '../eslint.config';
|
||||||
|
|
||||||
// To allow more languages other than `ts` in `.vue` files, uncomment the following lines:
|
// To allow more languages other than `ts` in `.vue` files, uncomment the following lines:
|
||||||
// import { configureVueProject } from '@vue/eslint-config-typescript'
|
// Import { configureVueProject } from '@vue/eslint-config-typescript'
|
||||||
// configureVueProject({ scriptLangs: ['ts', 'tsx'] })
|
// ConfigureVueProject({ scriptLangs: ['ts', 'tsx'] })
|
||||||
// More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup
|
// More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup
|
||||||
|
|
||||||
export default defineConfigWithVueTs(
|
const vueConfig = defineConfigWithVueTs(
|
||||||
{
|
{
|
||||||
name: 'app/files-to-lint',
|
name: 'app/files-to-lint',
|
||||||
files: ['**/*.{ts,mts,tsx,vue}'],
|
files: ['**/*.{ts,mts,tsx,vue}'],
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
name: 'app/files-to-ignore',
|
name: 'app/files-to-ignore',
|
||||||
ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
|
ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
|
||||||
},
|
},
|
||||||
|
|
||||||
pluginVue.configs['flat/essential'],
|
pluginVue.configs['flat/essential'],
|
||||||
vueTsConfigs.recommended,
|
vueTsConfigs.recommended,
|
||||||
|
|
||||||
{
|
{
|
||||||
...pluginVitest.configs.recommended,
|
...pluginVitest.configs.recommended,
|
||||||
files: ['src/**/__tests__/*'],
|
files: ['src/**/__tests__/*'],
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
...pluginPlaywright.configs['flat/recommended'],
|
...pluginPlaywright.configs['flat/recommended'],
|
||||||
files: ['e2e/**/*.{test,spec}.{js,ts,jsx,tsx}'],
|
files: ['e2e/**/*.{test,spec}.{js,ts,jsx,tsx}'],
|
||||||
},
|
},
|
||||||
skipFormatting,
|
skipFormatting
|
||||||
)
|
);
|
||||||
|
|
||||||
|
export default [
|
||||||
|
...rootConfig,
|
||||||
|
...vueConfig
|
||||||
|
]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue