Files
pp-tcms/eslint.config.mjs
2025-10-26 19:35:21 +09:00

75 lines
1.9 KiB
JavaScript

import globals from 'globals';
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import eslintConfigPrettier from 'eslint-config-prettier';
import eslintPluginReact from 'eslint-plugin-react';
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
import * as eslintPluginImport from 'eslint-plugin-import';
import eslintPluginNext from '@next/eslint-plugin-next';
export default tseslint.config(
{
name: 'unittcms/ignore-globally',
ignores: ['**/node_modules/', '**/.next/', '**/docs/', '**/coverage/'],
},
{
name: 'unittcms/load-plugins',
languageOptions: {
sourceType: 'module',
globals: {
...globals.browser,
...globals.node,
},
},
plugins: {
import: eslintPluginImport,
react: eslintPluginReact,
'react-hooks': eslintPluginReactHooks,
'@next/next': eslintPluginNext,
},
settings: {
react: {
version: 'detect',
},
next: {
rootDir: './*',
},
},
},
// Following settings ar on/off rules
{
name: 'unittcms/global-tuning',
extends: [eslint.configs.recommended],
rules: {
'import/order': 'error',
'no-unused-vars': 'error',
},
},
{
name: 'unittcms/for-typescript',
files: ['**/*.ts', '**/*.tsx'],
extends: [
tseslint.configs.strict,
eslintPluginReact.configs.flat.recommended,
eslintPluginReact.configs.flat['jsx-runtime'],
],
rules: {
'@typescript-eslint/no-namespace': 'off',
'react/prop-types': 'off',
...eslintPluginReactHooks.configs.recommended.rules,
},
},
{
name: 'unittcms/for-nextjs',
files: ['frontend/**/*.{ts,tsx,js,jsx}'],
rules: {
...eslintPluginNext.configs.recommended.rules,
...eslintPluginNext.configs['core-web-vitals'].rules,
},
},
{
name: 'eslint-config-prettier',
...eslintConfigPrettier,
}
);