Skip to content

ESLint Configuration

pjt comes with flexible ESLint configurations that you can customize to your needs.

Basic configuration with recommended rules.

eslint.config.js
import pjt from 'pjt/eslint';
export default [
...pjt.configs.recommended
];

Stricter configuration for maximum code quality.

import pjt from 'pjt/eslint';
export default [
...pjt.configs.strict
];

Minimal configuration with basic rules.

import pjt from 'pjt/eslint';
export default [
...pjt.configs.minimal
];

ESLint configurations are organized in src/eslint/:

src/eslint/
├── index.ts # Main export
├── config.ts # Base configurations
├── configs.ts # Named configurations
├── constants.ts # Constants
├── ignores.ts # Ignore patterns
└── rules.ts # Custom rules
import pjt from 'pjt/eslint';
export default [
...pjt.configs.recommended,
{
rules: {
'no-console': 'warn',
'prefer-const': 'error'
}
}
];
export default [
...pjt.configs.recommended,
{
files: ['**/*.test.js', '**/*.spec.js'],
rules: {
'no-console': 'off'
}
}
];

For TypeScript projects:

import pjt from 'pjt/eslint';
import tseslint from 'typescript-eslint';
export default [
...pjt.configs.recommended,
...tseslint.configs.recommended
];

For React projects:

import pjt from 'pjt/eslint';
import react from 'eslint-plugin-react';
export default [
...pjt.configs.recommended,
{
files: ['**/*.jsx', '**/*.tsx'],
plugins: { react },
rules: react.configs.recommended.rules
}
];

Configurations automatically ignore:

  • node_modules/
  • dist/
  • build/
  • .git/
  • Files from .gitignore
import pjt from 'pjt/eslint';
export default [
...pjt.configs.recommended,
{
ignores: [
'coverage/',
'docs/'
]
}
];

Add to .vscode/settings.json:

{
"eslint.experimental.useFlatConfig": true,
"eslint.configFile": "eslint.config.js"
}

ESLint will automatically detect the configuration.

Terminal window
# Check all files
npx eslint .
# Check specific files
npx eslint src/
# Auto fix
npx eslint . --fix

pjt uses the new flat config format for better performance.

export default [
...pjt.configs.recommended,
{
files: ['**/*.js'],
rules: { /* JS rules */ }
},
{
files: ['**/*.ts'],
rules: { /* TS rules */ }
}
];
shared-config.js
export const sharedRules = {
'no-console': 'warn'
};
// eslint.config.js
import { sharedRules } from './shared-config.js';
import pjt from 'pjt/eslint';
export default [
...pjt.configs.recommended,
{ rules: sharedRules }
];
// Check if file is in root
ls -la eslint.config.js
// Check syntax
node -c eslint.config.js
// Check files pattern
{
files: ['**/*.js'], // Don't forget **
rules: { ... }
}
  • Use .eslintignore
  • Limit files patterns
  • Exclude node_modules