eslint-config-proste
Version:
preset eslint config
59 lines (58 loc) • 1.55 kB
JavaScript
import rules from "../rules/react.js";
async function getReactConfig({
overrides,
version,
compiler
}) {
const [
{ default: react },
{ default: reactHooks },
{ default: reactRefresh },
{ default: reactCompiler },
{ default: reactEslint }
] = await Promise.all([
import("eslint-plugin-react"),
import("eslint-plugin-react-hooks"),
import("eslint-plugin-react-refresh"),
import("eslint-plugin-react-compiler"),
import("@eslint-react/eslint-plugin")
]);
return {
name: "proste_react_config",
files: ["**/*.?([cm])?([tj])s?(x)"],
settings: {
react: {
version
}
},
plugins: {
react,
"react-hooks": reactHooks,
"react-refresh": reactRefresh,
"react-compiler": reactCompiler,
"react-eslint": reactEslint.configs.all.plugins["@eslint-react"],
"react-eslint-name": reactEslint.configs.all.plugins["@eslint-react/naming-convention"],
"react-eslint-hooks": reactEslint.configs.all.plugins["@eslint-react/hooks-extra"],
"react-eslint-dom": reactEslint.configs.all.plugins["@eslint-react/dom"]
},
languageOptions: {
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
ecmaFeatures: {
jsx: !0
}
}
},
rules: {
...react.configs.flat?.recommended.rules,
...react.configs.flat?.["jsx-runtime"].rules,
...rules,
...overrides,
"react-compiler/react-compiler": compiler ? 2 : 0
}
};
}
export {
getReactConfig
};