espial-0.0.26: frontend/eslint.config.mjs
import eslint from '@eslint/js';
import checkFile from 'eslint-plugin-check-file';
import importPlugin from 'eslint-plugin-import';
import prettierRecommended from 'eslint-plugin-prettier/recommended';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import tseslint from 'typescript-eslint';
export default tseslint.config(
{
ignores: ['node_modules/**', 'dist/**', 'coverage/**', '.env'],
},
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
...tseslint.configs.strictTypeChecked,
prettierRecommended,
{
files: ['src/**/*.{ts,tsx}'],
languageOptions: {
parserOptions: {
project: './tsconfig.json',
tsconfigRootDir: import.meta.dirname,
sourceType: 'module',
},
},
plugins: {
'check-file': checkFile,
import: importPlugin,
'simple-import-sort': simpleImportSort,
},
settings: {
'import/core-modules': [],
},
rules: {
'prettier/prettier': 'error',
'@typescript-eslint/no-unused-vars': [
'error',
{
argsIgnorePattern: '^_',
varsIgnorePattern: '^_',
},
],
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
'import/first': 'error',
'import/newline-after-import': 'error',
'import/no-duplicates': 'error',
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: ['**/*.test.{ts,tsx}', 'test/**/*'],
includeTypes: true,
packageDir: ['./'],
},
],
'check-file/filename-naming-convention': [
'error',
{
'**/!^(use*).{js,ts}': 'KEBAB_CASE',
'**/!(main|index).{jsx,tsx,js} && !**/app/routes/**.{jsx,tsx}': 'PASCAL_CASE',
},
{
ignoreMiddleExtensions: true,
},
],
'check-file/folder-naming-convention': [
'error',
{
'src/**/!(__tests__)': 'KEBAB_CASE',
'src/components/**': 'PASCAL_CASE',
},
],
'no-console': 'warn',
},
},
);