ESLint Configuration
ESLint Configuration
Section titled “ESLint Configuration”pjt comes with flexible ESLint configurations that you can customize to your needs.
Available configurations
Section titled “Available configurations”Recommended
Section titled “Recommended”Basic configuration with recommended rules.
import pjt from 'pjt/eslint';
export default [ ...pjt.configs.recommended];Strict
Section titled “Strict”Stricter configuration for maximum code quality.
import pjt from 'pjt/eslint';
export default [ ...pjt.configs.strict];Minimal
Section titled “Minimal”Minimal configuration with basic rules.
import pjt from 'pjt/eslint';
export default [ ...pjt.configs.minimal];Module structure
Section titled “Module structure”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 rulesCustomizing rules
Section titled “Customizing rules”Adding custom rules
Section titled “Adding custom rules”import pjt from 'pjt/eslint';
export default [ ...pjt.configs.recommended, { rules: { 'no-console': 'warn', 'prefer-const': 'error' } }];Override for specific files
Section titled “Override for specific files”export default [ ...pjt.configs.recommended, { files: ['**/*.test.js', '**/*.spec.js'], rules: { 'no-console': 'off' } }];TypeScript support
Section titled “TypeScript support”For TypeScript projects:
import pjt from 'pjt/eslint';import tseslint from 'typescript-eslint';
export default [ ...pjt.configs.recommended, ...tseslint.configs.recommended];React/JSX support
Section titled “React/JSX support”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 }];Ignore patterns
Section titled “Ignore patterns”Configurations automatically ignore:
node_modules/dist/build/.git/- Files from
.gitignore
Additional ignore patterns
Section titled “Additional ignore patterns”import pjt from 'pjt/eslint';
export default [ ...pjt.configs.recommended, { ignores: [ 'coverage/', 'docs/' ] }];Editor integration
Section titled “Editor integration”VS Code
Section titled “VS Code”Add to .vscode/settings.json:
{ "eslint.experimental.useFlatConfig": true, "eslint.configFile": "eslint.config.js"}WebStorm/IntelliJ
Section titled “WebStorm/IntelliJ”ESLint will automatically detect the configuration.
CLI commands
Section titled “CLI commands”Checking files
Section titled “Checking files”# Check all filesnpx eslint .
# Check specific filesnpx eslint src/
# Auto fixnpx eslint . --fixBest practices
Section titled “Best practices”1. Use flat config
Section titled “1. Use flat config”pjt uses the new flat config format for better performance.
2. Organize by file types
Section titled “2. Organize by file types”export default [ ...pjt.configs.recommended, { files: ['**/*.js'], rules: { /* JS rules */ } }, { files: ['**/*.ts'], rules: { /* TS rules */ } }];3. Use extends for sharing
Section titled “3. Use extends for sharing”export const sharedRules = { 'no-console': 'warn'};
// eslint.config.jsimport { sharedRules } from './shared-config.js';import pjt from 'pjt/eslint';
export default [ ...pjt.configs.recommended, { rules: sharedRules }];Troubleshooting
Section titled “Troubleshooting””Cannot find config”
Section titled “”Cannot find config””// Check if file is in rootls -la eslint.config.js
// Check syntaxnode -c eslint.config.jsRules not applied
Section titled “Rules not applied”// Check files pattern{ files: ['**/*.js'], // Don't forget ** rules: { ... }}Slow linting
Section titled “Slow linting”- Use
.eslintignore - Limit
filespatterns - Exclude node_modules