@cityelectricalfactors/eslint-config-base
v2.0.0
Published
Shared ESLint config
Maintainers
Keywords
Readme
README
Shared ESLint config
Installation
yarn add @cityelectricalfactors/eslint-config-base -DESLint Modules
- Base (Javascript)
- React
- React Native
- Typescript
- Jest
- Prettier
Plugin Requirements
This package exports rule sets only — it does not register ESLint plugins. This avoids conflicts with tools like eslint-config-next and @react-native/eslint-config that register their own plugin instances.
You must install and register the plugins required by each module you use:
| Module | Required plugins |
| -------------- | ----------------------------------------------------------------------------- |
| Base | eslint-plugin-import, eslint-plugin-jsx-a11y |
| react | eslint-plugin-react, eslint-plugin-react-hooks |
| react-native | eslint-plugin-react-hooks, eslint-plugin-prettier, eslint-plugin-import |
| typescript | @typescript-eslint/eslint-plugin |
| jest | eslint-plugin-import |
| prettier | eslint-plugin-prettier |
Note: If you are using
eslint-config-nextor@react-native/eslint-config, those tools already register their own plugin instances. Do not re-register the same plugins or you will get conflicts.
Usage
Install the plugins required by the modules you are using, then register them in a single plugins config object before spreading the rule sets:
import { defineConfig } from "eslint/config";
import importPlugin from "eslint-plugin-import";
import jsxA11y from "eslint-plugin-jsx-a11y";
import react from "eslint-plugin-react";
import reactHooks from "eslint-plugin-react-hooks";
import prettier from "eslint-plugin-prettier";
import baseConfig from "@cityelectricalfactors/eslint-config-base";
import reactConfig from "@cityelectricalfactors/eslint-config-base/react";
import typescriptConfig from "@cityelectricalfactors/eslint-config-base/typescript";
import jestConfig from "@cityelectricalfactors/eslint-config-base/jest";
import prettierConfig from "@cityelectricalfactors/eslint-config-base/prettier";
export default defineConfig([
{
plugins: {
import: importPlugin,
"jsx-a11y": jsxA11y,
react,
"react-hooks": reactHooks,
prettier,
},
},
...baseConfig,
...reactConfig,
...typescriptConfig,
...jestConfig,
...prettierConfig,
]);For React Native projects, use the react-native module instead of react:
import reactNative from "@cityelectricalfactors/eslint-config-base/react-native";Support
If you have any questions or run into any issues, feel free reach out to the Frontend team on Slack.
