eslint-config-niieani
Version:
Reusable ESLint config for Beemo configured projects.
67 lines (53 loc) • 3.06 kB
Markdown
# eslint-config-beemo
[](https://github.com/beemojs/dev/actions?query=branch%3Amaster)
[](https://www.npmjs.com/package/eslint-config-beemo)
[](https://www.npmjs.com/package/eslint-config-beemo)
A modern TypeScript-only ESLint config with optional presets. Expands upon the amazing
[Airbnb config](https://www.npmjs.com/package/eslint-config-airbnb-base) to provide the latest
ECMAScript features, enforce popular patterns, and align with the wider community.
```bash
yarn install --dev eslint eslint-config-niieani
```
## Setup
Extend the `niieani` config in your root `.eslintrc.js`. Additional [presets](#presets) are available
for additional rules.
```js
module.exports = {
root: true,
extends: ['niieani'],
}
```
### Presets
The following additional configs can also be extended, but are not enabled by default.
- `niieani/browser` - Sets the environment to the browser/DOM and enables the
[compat](https://www.npmjs.com/package/eslint-plugin-compat) plugin. Should _not_ be used with the
`node` preset.
- `niieani/node` - Sets the environment to Node.js and enables the
[node](https://www.npmjs.com/package/eslint-plugin-node) plugin. Should _not_ be used with the
`browser` preset.
- `niieani/react` - Enables the [react](https://www.npmjs.com/package/eslint-plugin-react),
[react-hooks](https://www.npmjs.com/package/eslint-plugin-react-hooks),
[react-perf](https://www.npmjs.com/package/eslint-plugin-react-perf), and
[jsx-a11y](https://www.npmjs.com/package/eslint-plugin-jsx-a11y) plugins.
- Only applies to `*.tsx` files and also extends the `browser` preset.
- Enables automatic JSX runtime if root `react` version is 17+.
## Features
- Extends the [airbnb-base](https://www.npmjs.com/package/eslint-config-airbnb-base) config and
enables additional rules.
- Prefers named exports over default exports.
- Enforces async/await/promise best practices with the
[promise](https://www.npmjs.com/package/eslint-plugin-promise) plugin.
- Sorts imports/exports in a logical way using the
[simple-import-sort](https://www.npmjs.com/package/eslint-plugin-simple-import-sort) plugin.
- Encourages readable tests with the [jest](https://www.npmjs.com/package/eslint-plugin-jest)
plugin. Only applies to [test](#requirements) files.
- Enables additional awesome rules from the
[unicorn](https://www.npmjs.com/package/eslint-plugin-unicorn) plugin.
- Automatically sets `parserOptions.project` based on the root `tsconfig.json`.
- Avoids `any` type and unsafe operations.
- Uses tabs over spaces for accessibility compliance.
## Requirements
- Source files must be located in a `src` folder.
- Tests files must end in `*.test.{ts,tsx}` and be located within a `tests` or `__tests__` folder.
- Relies on TypeScript for parsing files.
- Root `package.json` contains a Node.js `engine` for the target runtime.