eslint-config-satya164
Version:
Personal ESLint Config of @satya164
125 lines (94 loc) • 3.42 kB
Markdown
# eslint-config-satya164
This is my personal ESLint config. I try to avoid rules which are purely stylistic and based on personal opinions. I'm tryin to keep it non-intrusive and aimed towards catching actual errors.
## Features
The config includes these plugins by default:
- [eslint-comments](https://eslint-community.github.io/eslint-plugin-eslint-comments/)
- [import-x](https://github.com/un-ts/eslint-plugin-import-x)
- [jest](https://github.com/jest-community/eslint-plugin-jest)
- [prettier](https://github.com/prettier/eslint-plugin-prettier)
- [promise](https://github.com/eslint-community/eslint-plugin-promise)
- [react-hooks](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks)
- [react-hooks](https://reactjs.org/docs/hooks-rules.html)
- [react](https://github.com/Rel1cx/eslint-react)
- [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint)
The config uses the `overrides` feature of ESLint to automatically adjust the config based on the filename. For example, typescript support is enabled for `.ts` and `.tsx` files, the `jest` environment is set for test files and more.
Prettier is used for formatting.
## Usage
First, install the required packages:
```sh
yarn add --dev prettier eslint eslint-config-satya164
```
If you're using TypeScript, also install the TypeScript compiler:
```sh
yarn add --dev typescript
```
Now use the config in your config file:
```js
// eslint.config.mjs
import { defineConfig } from 'eslint/config';
import { recommended, react, vitest } from 'eslint-config-satya164';
export default defineConfig(
// The base config
recommended,
// Optional configs for tools (i.e. react, vitest, jest)
react,
vitest,
{
// Your additional config here
}
);
```
You can also enable type-aware rules:
```js
// eslint.config.mjs
import { defineConfig } from 'eslint/config';
import { recommended, typechecked } from 'eslint-config-satya164';
export default defineConfig(
// The base config
recommended,
// Type-aware rules
typechecked,
{
languageOptions: {
// Needed for type-aware rules
parserOptions: {
project: true,
// Path to folder containing tsconfig.json
tsconfigRootDir: import.meta.dirname,
},
},
},
);
```
Also see [Typed Linting](https://typescript-eslint.io/troubleshooting/typed-linting) docs for more details.
Using the config requires ESLint 9's [flat config format](https://eslint.org/docs/latest/use/configure/configuration-file).
To lint your files, you can add the following script to your `package.json`:
```json
"scripts": {
"lint": "eslint \"**/*.{js,ts,tsx}\""
}
```
To show lint errors in your editor, you'll need to configure your editor. To configure [VSCode](https://code.visualstudio.com), add the following in `settings.json`:
```json
"eslint.validate": [
{
"language": "javascript",
"autoFix": true
},
{
"language": "javascriptreact",
"autoFix": true
},
{
"language": "typescript",
"autoFix": true
},
{
"language": "typescriptreact",
"autoFix": true
}
],
```
On Mac OS, you can open `settings.json` file from `Code` > `Preferences` > `Settings` or via the keyboard shortcut <kbd>⌘,</kbd>.
This config sets `autoFix` to `true` to automatically fix lint errors on save. You can set it to `false` if you don't want this behaviour.
Happy linting 🎉