@ariestools/eslint-config-flat
v10.0.7
Published
ESLint 9/10 flat config tiers for Aries Tools TypeScript packages
Readme
@ariestools/eslint-config-flat
ESLint 9/10 flat config tiers for Aries Tools TypeScript packages
Install
Requires Node.js ≥ 22. pnpm is fully supported; npm / yarn / bun are experimental.
pnpm add -D @ariestools/eslint-config-flatPeer: eslint ^10.3 and eslint-import-resolver-typescript ^4.4.
Usage
import { recommendedConfig } from '@ariestools/eslint-config-flat'
export default [
...recommendedConfig({ tier: 3, isTypeChecked: true }),
]recommendedConfig accepts:
| Option | Default | Description |
|--------|---------|-------------|
| tier | 3 | Preset strictness level (0–4) |
| isTypeChecked | true | Enable TypeScript type-checked rules |
When isTypeChecked is false, all rules that require parser type information are disabled across every tier, and a safety-net gate turns off any type-checked preset rules that would otherwise remain active.
Tiers
Each tier is a superset of the previous tier.
| Tier | Category | Description | |------|----------|-------------| | 0 | Correctness | Type safety, bug prevention, import restrictions, markdown | | 1 | Consistency | Tier 0 + formatting, member ordering, complexity limits | | 2 | Best practices | Tier 1 + unicorn, import validation, workspace rules | | 3 | Opinionated (default) | Tier 2 + unicorn opinionated rules and optional rules promoted to errors | | 4 | Experimental | Tier 3 + newer unicorn warnings (canary; may change on a minor) |
Rule tier assignments live in RULE_CATALOG (exported from this package). Named exports such as configTier3OpinionatedTypeChecked remain available but are deprecated. Prefer recommendedConfig({ tier: 3, isTypeChecked: true }).
Rules introduced only at tier 3 or 4 default to warnings. Use xy lint --strict (or XY_STRICT=1) to treat warnings as errors in CI.
Extending with custom rules
import { recommendedConfig } from '@ariestools/eslint-config-flat'
export default [
...recommendedConfig({ tier: 3, isTypeChecked: true }),
{
rules: {
// your overrides
},
},
]Individual configs
import {
importConfig,
rulesConfig,
typescriptConfig,
unicornConfig,
} from '@ariestools/eslint-config-flat'JSON/markdown helpers: jsonConfig, docsConfig. There is no SonarJS config in this package (xy sonar is a separate, quarantined CLI command).
What's included
- TypeScript strict linting via
@typescript-eslint - Import sorting and validation via
eslint-plugin-import-x - Best practices via
eslint-plugin-unicorn - Monorepo workspace rules via
eslint-plugin-workspaces - Markdown linting via
@eslint/markdown - Stylistic formatting (no semicolons, single quotes, trailing commas, 2-space indent)
For React projects, use @ariestools/eslint-config-react-flat instead.
Rule ownership
Some plugins cover similar territory. This config assigns a single canonical owner per concern and disables overlapping rules. See RULE_OWNERSHIP_GROUPS and assertNoRuleOwnershipConflicts.
When upgrading ESLint plugins, run tests in this package — spec/plugin-rules.spec.ts snapshots each plugin's rule list and fails when new rules appear.
License
LGPL-3.0-only. See LICENSE (LGPLv3) and COPYING (GPLv3, incorporated by LGPL-3).
