a programming education platform
www.hypercommit.com
education
1import js from "@eslint/js"
2import eslintConfigPrettier from "eslint-config-prettier"
3import pluginReact from "eslint-plugin-react"
4import pluginReactHooks from "eslint-plugin-react-hooks"
5import globals from "globals"
6import tseslint from "typescript-eslint"
7
8import { config as baseConfig } from "./base.js"
9
10/**
11 * A custom ESLint configuration for libraries that use React.
12 *
13 * @type {import("eslint").Linter.Config} */
14export const config = [
15 ...baseConfig,
16 js.configs.recommended,
17 eslintConfigPrettier,
18 ...tseslint.configs.recommended,
19 pluginReact.configs.flat.recommended,
20 {
21 languageOptions: {
22 ...pluginReact.configs.flat.recommended.languageOptions,
23 globals: {
24 ...globals.serviceworker,
25 ...globals.browser,
26 },
27 },
28 },
29 {
30 plugins: {
31 "react-hooks": pluginReactHooks,
32 },
33 settings: { react: { version: "detect" } },
34 rules: {
35 ...pluginReactHooks.configs.recommended.rules,
36 // React scope no longer necessary with new JSX transform.
37 "react/react-in-jsx-scope": "off",
38 "react/prop-types": "off",
39 },
40 },
41]