A comprehensive ESLint configuration package for TypeScript and JavaScript projects, featuring stylistic rules, import sorting, and specialized configurations for different environments.
- 🎯 TypeScript-first: Built with TypeScript support as a primary concern
- 🎨 Stylistic Rules: Comprehensive formatting and code style enforcement
- 📦 Import Sorting: Automatic import organization with
simple-import-sort
- 🏗️ Multiple Configs: Tailored configurations for different project types
- 🔧 Modern ESLint: Uses ESLint v9 flat config format
- 🚀 Lit Support: Specialized rules for Lit element development
npm install @arcmantle/eslint-config
# or
pnpm add @arcmantle/eslint-config
# or
yarn add @arcmantle/eslint-config
Create an eslint.config.js
file in your project root:
import { configs } from '@arcmantle/eslint-config';
export default [
...configs.recommended,
// Add your custom overrides here
];
The default configuration suitable for most TypeScript/JavaScript projects.
import { configs } from '@arcmantle/eslint-config';
export default [...configs.recommended];
Includes:
- ESLint recommended rules
- TypeScript strict and stylistic rules
- Stylistic formatting rules
- Import sorting
- Modern ECMAScript features support
Extends the recommended config with Node.js specific optimizations.
import { configs } from '@arcmantle/eslint-config';
export default [...configs.node];
Specialized configuration for Lit element development.
import { configs } from '@arcmantle/eslint-config';
export default [...configs.lit];
Includes:
- All recommended rules
- Lit-specific linting rules
- Custom element best practices
- Indentation: Tab-based indentation
- Quotes: Single quotes with template literal support
- Semicolons: Always required
- Max Line Length: 130 characters for code, 150 for comments
- Brace Style: Stroustrup style
- Object/Array Spacing: Enforced spacing for readability
Imports are automatically sorted using simple-import-sort
:
- External libraries first
- Internal imports second
- Relative imports last
- Blank lines between import groups
- Strict type checking enabled
- Explicit return types required for public methods
- Unused variables warning (prefix with
_
to ignore) - No-public accessibility modifier enforcement
- Consistent generic constructor patterns
The configuration applies to:
**/*.{js,jsx,mjs,cjs,ts,tsx}
And ignores:
**/dist/**
**/node_modules/**
You can override specific rules by extending the configuration:
import { configs } from '@arcmantle/eslint-config';
export default [
...configs.recommended,
{
rules: {
// Your custom rule overrides
'@stylistic/max-len': ['warn', { code: 100 }],
'@typescript-eslint/no-explicit-any': 'error',
},
},
];
- Node.js: >= 22
- ESLint: >= 9.29.0
- TypeScript: >= 5.8.3 (for TypeScript projects)
This package includes and configures:
@eslint/js
- Core ESLint rules@stylistic/eslint-plugin
- Code formatting ruleseslint-plugin-lit
- Lit element specific ruleseslint-plugin-simple-import-sort
- Import organizationtypescript-eslint
- TypeScript integration
MIT
Kristoffer Roen-Lie