@vedapointe-shared/eslint-config-react
v2.1.0
Published
Recommended react eslint configuration for VedaPointe products
Readme
@vedapointe-shared/eslint-config-react
Shared ESLint 9 flat config for VedaPointe React + TypeScript projects. Exports a single factory function that returns a complete config array — all plugins are bundled, so consumers don't install them individually.
What's included
| Plugin | Purpose |
| ---------------------------------- | ------------------------------------------- |
| @eslint/js | Base JS recommended rules |
| typescript-eslint | Strict + stylistic type-checked TS rules |
| eslint-plugin-react | React recommended + JSX runtime |
| eslint-plugin-react-hooks | Hooks rules |
| eslint-plugin-react-refresh | HMR export validation (apps only) |
| eslint-plugin-jsx-a11y | Accessibility |
| eslint-plugin-unicorn | Code quality |
| eslint-plugin-sonarjs | Code smell detection |
| eslint-plugin-simple-import-sort | Import/export sorting |
| @vitest/eslint-plugin | Vitest test file rules |
| eslint-config-prettier | Disables formatting conflicts (always last) |
Direct MUI imports (except @mui/icons-material) are blocked by default via no-restricted-imports.
Requirements
- ESLint >= 9
- TypeScript >= 5
Installation
npm i @vedapointe-shared/eslint-config-reactUsage
App (default)
// eslint.config.mjs
import createConfig from "@vedapointe-shared/eslint-config-react";
export default [...createConfig({ tsconfigRootDir: import.meta.dirname })];Library
// eslint.config.mjs
import createConfig from "@vedapointe-shared/eslint-config-react";
export default [
...createConfig({
tsconfigRootDir: import.meta.dirname,
type: "library",
ignores: ["lib/**"],
}),
];With overrides
// eslint.config.mjs
import createConfig from "@vedapointe-shared/eslint-config-react";
export default [
...createConfig({ tsconfigRootDir: import.meta.dirname }),
{
// app-specific overrides
rules: {
"@typescript-eslint/no-explicit-any": "warn",
},
},
];Options
| Option | Type | Default | Description |
| ----------------- | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------- |
| tsconfigRootDir | string | — | Required. Absolute path to the tsconfig root directory. |
| type | 'app' \| 'library' | 'app' | 'app' includes react-refresh rules; 'library' omits them. |
| ignores | string[] | [] | Additional glob patterns merged with the defaults (node_modules/**, dist/**, build/**, lib/**, coverage/**). |
Config array order
- Global ignores
@eslint/jsrecommendedtypescript-eslintstrict + stylistic type-checked- Main rules (TS guardrails, unicorn, sonarjs, import sort, MUI restrictions)
- React, hooks, accessibility (+ react-refresh for apps)
- Vitest (scoped to
*.test.*/*.spec.*) - Prettier (must be last)
Development
npm install
npm test