ADI ESLint configuration for TypeScript projects using the new flat config format.
npm install @the-ihor/adi-eslint-config-typescript
# or
bun add @the-ihor/adi-eslint-config-typescript// eslint.config.ts
import adi from "@the-ihor/adi-eslint-config-typescript";
export default adi();// eslint.config.ts
import adi from "@the-ihor/adi-eslint-config-typescript";
export default adi({
strictMode: true,
files: ["**/*.{js,ts}"],
testFiles: ["**/*.test.ts", "**/*.spec.ts"],
ignores: ["dist/**", "build/**"],
});You can extend the ADI config with additional rules or configurations:
// eslint.config.ts
import adi from "@the-ihor/adi-eslint-config-typescript";
export default [
...adi({
strictMode: false,
ignores: ["dist/**", "build/**"],
}),
// Add additional configurations
{
files: ["**/*.ts"],
rules: {
// Override or add custom rules
"no-console": "error",
"@typescript-eslint/explicit-function-return-type": "warn",
},
},
{
files: ["**/*.test.ts"],
rules: {
// Test-specific rules
"no-console": "off",
},
},
];// For React projects
import adi from "@the-ihor/adi-eslint-config-typescript";
import reactPlugin from "eslint-plugin-react";
export default [
...adi(),
{
files: ["**/*.{ts,tsx}"],
plugins: {
react: reactPlugin,
},
rules: {
"react/jsx-uses-react": "error",
"react/jsx-uses-vars": "error",
},
},
];| Option | Type | Default | Description |
|---|---|---|---|
files |
string[] |
["**/*.{js,mjs,cjs,ts,mts,cts}"] |
File patterns to lint |
ignores |
string[] |
["dist/**", "build/**", ...] |
File patterns to ignore |
strictMode |
boolean |
false |
Enable strict TypeScript rules (makes @typescript-eslint/no-explicit-any an error) |
testFiles |
string[] |
["**/*.test.{ts,tsx,js,jsx}", "**/*.spec.{ts,tsx,js,jsx}"] |
Test file patterns with relaxed rules |
- JavaScript: ESLint recommended rules
- TypeScript: TypeScript ESLint recommended rules
- Code Style: Consistent formatting (comma-dangle, object-curly-spacing, etc.)
- Best Practices: Modern JavaScript practices (prefer-const, no-var, eqeqeq)
- TypeScript Specific: Unused variable detection, namespace handling
Make sure you have these installed:
{
"@eslint/js": "^9.0.0",
"eslint": "^9.0.0",
"typescript-eslint": "^8.0.0",
"globals": "^16.0.0"
}MIT