The project uses ESLint with the Flat Config format (eslint.config.mjs). The configuration integrates recommended rules from ESLint, Jest, and Prettier. It uses @eslint/compat to ensure compatibility with older plugin formats and @eslint/eslintrc's FlatCompat to extend existing configurations.
Key Configuration Details:
- Ignored Directories:
**/coverage, **/dist, **/linter, and **/node_modules are excluded from linting. - Globals: The environment is configured for
node and jest, with Atomics and SharedArrayBuffer set to readonly. - ECMAScript Version: Set to
2023 with sourceType: 'module'. - Prettier Integration: Prettier is enforced as an error via
prettier/prettier: 'error'.
import { fixupPluginRules } from '@eslint/compat'
import { FlatCompat } from '@eslint/eslintrc'
import js from '@eslint/js'
// ... other imports
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
})
export default [
{
ignores: ['**/coverage', '**/dist', '**/linter', '**/node_modules']
},
...compat.extends(
'eslint:recommended',
'plugin:jest/recommended',
'plugin:prettier/recommended'
),
{
plugins: {
import: fixupPluginRules(_import),
jest,
prettier
},
languageOptions: {
globals: {
...globals.node,
...globals.jest,
Atomics: 'readonly',
SharedArrayBuffer: 'readonly'
},
ecmaVersion: 2023,
sourceType: 'module'
},
rules: {
camelcase: 'off',
'eslint-comments/no-use': 'off',
'eslint-comments/no-unused-disable': 'off',
'i18n-text/no-en': 'off',
'import/no-namespace': 'off',
'no-console': 'off',
'no-shadow': 'off',
'no-unused-vars': 'off',
'prettier/prettier': 'error'
}
}
]