Curated ESLint configs that I've been improving over the years. All my projects use this.
Since v4, this should be used together with Biome. Internally it uses my other package, the eslint-config-biome. If you want to stay without Biome, use v3 together with Prettier (I recommend prettier-config-gev)
Run npx eslint-config-gev <flavor>
, being flavor one of the following: ts, next, react, react-native, js
. This list and further options can be seen by running npx eslint-config-gev --help
.
This command adds the required package to your package.json and sets up the .eslintrc.cjs
.
npm i -D eslint-config-gev
- Add the following to the top of your .eslintrc.js:
// This is a workaround for https://github.com/eslint/eslint/issues/3458
require('@rushstack/eslint-patch/modern-module-resolution');
With it, you won't need to install eslint
and all the plugins we use!
-
Add
'eslint-config-gev'
(or'eslint-config-gev/ts'
) to theextends: [...]
field in your eslintrc..eslintrc.js example
// https://github.com/SrBrahma/eslint-config-gev // This is a workaround for https://github.com/eslint/eslint/issues/3458 require('@rushstack/eslint-patch/modern-module-resolution'); module.exports = { root: true, env: { es2021: true, node: true, }, extends: ['eslint-config-gev/js'], overrides: [ { files: ['*.ts'], extends: ['eslint-config-gev/ts'], parser: '@typescript-eslint/parser', parserOptions: { tsconfigRootDir: __dirname, project: ['./tsconfig.json'], ecmaVersion: 12, sourceType: 'module', }, }, ], ignorePatterns: ['/lib/**/*', '/dist/**/*'], rules: {}, };
-
Add
'eslint-config-gev/js'
to theextends: [...]
field in your eslintrc..eslintrc.js example
// https://github.com/SrBrahma/eslint-config-gev // This is a workaround for https://github.com/eslint/eslint/issues/3458 require('@rushstack/eslint-patch/modern-module-resolution'); module.exports = { root: true, env: { es2021: true, node: true, }, extends: ['eslint-config-gev/js'], ignorePatterns: [], rules: {}, };
-
Add
'eslint-config-gev/react'
to theextends: [...]
field in your eslintrc..eslintrc.js example
// https://github.com/SrBrahma/eslint-config-gev // This is a workaround for https://github.com/eslint/eslint/issues/3458 require('@rushstack/eslint-patch/modern-module-resolution'); module.exports = { root: true, env: { es2021: true, node: true, }, extends: ['eslint-config-gev/react-js'], overrides: [ { files: ['*.ts', '*.tsx'], extends: ['eslint-config-gev/react'], parser: '@typescript-eslint/parser', parserOptions: { tsconfigRootDir: __dirname, project: ['./tsconfig.json'], ecmaVersion: 12, sourceType: 'module', ecmaFeatures: { jsx: true, }, }, }, ], ignorePatterns: ['/lib/**/*', '/dist/**/*'], rules: {}, };
-
Add
'eslint-config-gev/react-js'
to theextends: [...]
field in your eslintrc..eslintrc.js example
// https://github.com/SrBrahma/eslint-config-gev // This is a workaround for https://github.com/eslint/eslint/issues/3458 require('@rushstack/eslint-patch/modern-module-resolution'); module.exports = { root: true, env: { es2021: true, node: true, }, extends: ['eslint-config-gev/react-js'], ignorePatterns: ['/lib/**/*', '/dist/**/*'], rules: {}, };
-
Add
'eslint-config-gev/react-native'
to theextends: [...]
field in your eslintrc..eslintrc.js example
// https://github.com/SrBrahma/eslint-config-gev // This is a workaround for https://github.com/eslint/eslint/issues/3458 require('@rushstack/eslint-patch/modern-module-resolution'); module.exports = { root: true, env: { es2021: true, node: true, 'react-native/react-native': true, // *1 }, extends: ['eslint-config-gev/react-native-js'], overrides: [ { files: ['*.ts', '*.tsx'], extends: ['eslint-config-gev/react-native'], parser: '@typescript-eslint/parser', parserOptions: { tsconfigRootDir: __dirname, project: ['./tsconfig.json'], ecmaVersion: 12, sourceType: 'module', ecmaFeatures: { // *1 jsx: true, }, }, }, ], rules: {}, }; // [*1]: https://github.com/Intellicode/eslint-plugin-react-native#configuration
-
Add
'eslint-config-gev/react-native-js'
to theextends: [...]
field in your eslintrc..eslintrc.js example
// https://github.com/SrBrahma/eslint-config-gev // This is a workaround for https://github.com/eslint/eslint/issues/3458 require('@rushstack/eslint-patch/modern-module-resolution'); module.exports = { root: true, env: { es2021: true, node: true, 'react-native/react-native': true, // *1 }, extends: ['eslint-config-gev/react-native-js'], rules: {}, }; // [*1]: https://github.com/Intellicode/eslint-plugin-react-native#configuration