@shayanthenerd/eslint-config
Version:
A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style
28 lines (27 loc) • 1.15 kB
JavaScript
import { globs } from "../helpers/globs.mjs";
import { isEnabled } from "../utils/isEnabled.mjs";
import { defaultOptions } from "../helpers/options/defaultOptions.mjs";
import { getReactRules } from "../rules/react.mjs";
import { mergeConfigs } from "eslint-flat-config-utils";
import eslintPluginUnicorn from "eslint-plugin-unicorn";
import eslintPluginJsxA11y from "eslint-plugin-jsx-a11y";
import eslintPluginReact from "@eslint-react/eslint-plugin";
import eslintPluginHtmlReact from "@html-eslint/eslint-plugin-react";
//#region src/configs/react.ts
function getReactConfig(options) {
const { react, unicorn } = options.configs;
const { overrides, accessibility } = isEnabled(react) ? react : defaultOptions.configs.react;
return mergeConfigs({
name: "shayanthenerd/react",
files: [globs.src, globs.jsxTsx],
plugins: {
"@eslint-react": eslintPluginReact,
"@html-eslint/react": eslintPluginHtmlReact,
...isEnabled(unicorn) && { unicorn: eslintPluginUnicorn },
...isEnabled(accessibility) && { "jsx-a11y": eslintPluginJsxA11y }
},
rules: getReactRules(options)
}, overrides);
}
//#endregion
export { getReactConfig };