Sensible linting config with consistency and maintainability at the core.
- Opinionated ESLint configuration for modern JavaScript and TypeScript projects
- Integrates with Prettier for code formatting
- Includes recommended rules for React, accessibility (jsx-a11y), promises, imports, and more
- Supports TypeScript, React, and stylistic rules
- Designed for maintainability and code quality
- ESLint >= 8.0.0
- TypeScript >= 4.0.0
- Node.js >= 14.0.0
pnpm add -D eslint-config-98kb
# or
npm install --save-dev eslint-config-98kb
# or
yarn add -D eslint-config-98kbAdd eslint-config-98kb to your ESLint config (eslint.config.js, etc):
// eslint.config.js
import {defineConfig} from 'eslint/config';
import {jsxA11y, react, recommended, strict, typescript} from 'eslint-config-98kb';
export default defineConfig(
jsxA11y,
react,
recommended,
strict, // includes custom 98kb rules
typescript,
);base— Base JavaScript rulesimport— Import/export related rulesjsxA11y— Accessibility rules for JSXmaintainability— Code complexity and maintainability rulespromise— Promise-related rulesreact— React-specific rulesrecommended— Recommended combination of rulesstrict— Strict rules including custom 98kb rulesstylistic— Code style and formatting rulestypescript— TypeScript-specific rules
The strict configuration includes custom 98kb rules:
Ensures that file names match exactly with their named export names. Supports camelCase, PascalCase, and kebab-case conversions. TypeScript type exports (interfaces, type aliases, and type-only exports) are ignored by this rule.
Options:
ignoreIndexFiles(default:true) — Whether to ignore index files
Examples:
// my-component.js ✅
export const MyComponent = () => {}; // PascalCase allowed
// user-service.js ✅
export const userService = {}; // camelCase allowed
// api-client.js ❌
export const wrongName = {}; // Should be apiClient or ApiClient
// user-data.ts ✅
export interface AnyName {} // Type exports are ignored
// api-response.ts ✅
export type SomeType = {}; // Type exports are ignoredLimits files to only one named export to maintain clean module interfaces.
Options:
allowDefaultExport(default:false) — Whether to allow default exportsallowTypeExports(default:true) — Whether to allow separate type exports
@typescript-eslinteslint-plugin-importeslint-plugin-jsx-a11yeslint-plugin-promiseeslint-plugin-reacteslint-plugin-react-hookseslint-plugin-sonarjseslint-config-sonarqubeeslint-config-unjs@stylistic/eslint-plugin
pnpm run lint— Lint and check formattingpnpm run inspector— Inspect your ESLint config
MIT © Yashodhan Singh