My favorite eslint configurations for ESLint >=9. A version for earlier ESLint releases in available on eslint-plugin-gb@2.
npm add --save-dev typescript
npm add --save-dev eslint
npm add --save-dev @typescript-eslint/parser
npm add --save-dev @typescript-eslint/eslint-plugin
npm add --save-dev eslint-plugin-gb
see Configuration Files - ESLint - Pluggable JavaScript Linter for detailed information. For the basics add the eslint.config.js
to the root of your project.
// eslint.config.cjs
const js = require('@eslint/js');
const gb = require('eslint-plugin-gb');
module.exports = [
...js.configs.recommended,
...gb.configs['flat/recommended'],
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {},
},
];
// eslint.config.mjs
import js from "@eslint/js";
import ts from "typescript-eslint";
import gb from "eslint-plugin-gb";
import globals from "globals";
/** @type {import('eslint').Linter.Config[]} */
export default [
js.configs.recommended,
...ts.configs.recommended,
...gb.configs["flat/recommended"],
];
Rule | Setting |
---|---|
@typescript-eslint/consistent-type-imports | warn |
@typescript-eslint/explicit-member-accessibility | warn |
@typescript-eslint/explicit-module-boundary-types | warn |
@typescript-eslint/member-ordering | warn (with alphabetical ordering and strict rules.) |
@typescript-eslint/no-unused-vars | off |
all of the recommended
rules and also the following.
Rule | Setting |
---|---|
@typescript-eslint/no-floating-promises | warn |
@typescript-eslint/unbound-method | error |
This is a bare-bones library. There are no npm scripts or monorepo plugins. npx prettier . -w
works ok.
eslint-plugin-gb version | eslint version |
---|---|
^9.0.0 | >=9.0.0 |
^2.0.0 | <9.0.0 |