3.2 KiB
@ruject/eslint-config
A comprehensive ESLint configuration package designed for TypeScript projects, enforcing stylistic consistency, code quality, and modern best practices.
Why This Config?
- Reduces boilerplate setup across multiple projects.
- Enforces consistent style and property ordering in classes/interfaces/objects.
- Integrates modern ESLint ecosystem plugins in a single, maintainable config.
- Designed for TypeScript projects with type-aware linting.
Features
- TypeScript support via
typescript-eslint. - Code style enforcement with
eslint-plugin-perfectionistandeslint-plugin-prettier. - Quality & bug detection using
eslint-plugin-sonarjsandeslint-plugin-unicorn. - Custom sorting rules for classes, interfaces, objects, and object types.
- Prettier integration for consistent formatting.
- Ignores build output directories like
dist/**.
Installation
bun install -D @ruject/eslint-config
# or
npm install --save-dev @ruject/eslint-config
All ESLint plugins and TypeScript ESLint should be installed as dev dependencies alongside this package.
Usage
Flat config (recommended)
Create a eslint.config.js in your project:
import config from '@ruject/eslint-config';
export default config;
Legacy config
Create a .eslintrc.js in your project:
module.exports = {
extends: ['@ruject/eslint-config'],
};
Rules
Sorting with Perfectionist
-
Classes, Interfaces, Objects, Object Types are sorted according to custom natural rules.
-
sortBaseRule— base sorting order for objects and interfaces. -
sortDetailedRule— detailed sorting for classes, including static/private/protected properties and methods. -
Keys like
type,id,name,meta,author,versionare prioritized, unknown properties are moved to the bottom. -
All other members (methods, properties, accessors, static blocks) are sorted naturally with detailed rules.
Prettier
- Enforces single quotes.
- Automatically checks formatting errors.
- Ensures code is formatted consistently across the project.
SonarJS Rules
- Integrates recommended SonarJS rules for detecting code smells and maintainability issues.
Unicorn Rules
- Enables all Unicorn plugin rules for safer and cleaner code.
Ignored Files
Automatically ignores:
dist/**
**/dist/**
build/**
**/build/**
Customization
You can extend or override any rule as needed:
module.exports = {
extends: ['@ruject/eslint-config'],
rules: {
'perfectionist/sort-classes': 'off',
'prettier/prettier': ['error', { singleQuote: false }],
},
};
License
See LICENSE for details.