Minimal ESLint configuration for reducing version control noise and avoiding common mistakes.
- Prevent code patterns which frequently cause or lead to bugs.
- Produce consistent source code without requiring functional changes.
- Prefer rules which are auto-fixable.
- Avoid rules which require frequent inline disabling.
- Avoid rules which are already covered by TypeScript.
Install the eslint-config-rational
package.
npm i -D eslint-config-rational eslint typescript
Add the rational
configuration to your eslint.config.js
(flat) configuration file.
import rational from 'eslint-config-rational';
export default rational();
The rational(options?)
configuration factory accepts the following options.
-
ignores
: Add ESLint global ignores. Defaults to['**/{.git,node_modules,out,lib,dist}']
. -
jsExtensions
: Array of file extensions to lint as JavaScript. Defaults to['.js', '.cjs', '.mjs', '.jsx']
. -
tsExtensions
: Array of file extensions to lint as TypeScript. Defaults to['.ts', '.cts', '.mts', '.tsx']
. -
jsxExtensions
: Array of file extensions to lint as JSX. Defaults to['.jsx', '.tsx']
. -
relaxedFiles
: Array of file paths to lint with relaxed rules. Defaults to['**/*.test.*', '**/*.spec.*', '**/*.config.*', '**/*.setup.*', '**/.*rc.*', '**/*.story.*', '**/__*', '**/__*/**', '**/.*', '**/.*/**']
. -
enableImports
: Enable import rules. Defaults totrue
. -
enableUnicorn
: Enable unicorn rules. Defaults totrue
. -
enableReact
: Enable react rules. Defaults totrue
. -
enableTypescript
: Enable typescript rules. Defaults totrue
. -
enableStylistic
: Enable ESLint Stylistic rules. Defaults totrue
. -
extend
: One or more ESLint configurations to extend (nested arrays allowed). -
override
: One or more ESLint override configurations (nested arrays allowed).
import rational from 'eslint-config-rational';
export default rational({
ignores: ['**/{.git,node_modules,out,lib,dist}'],
jsExtensions: ['.js', '.cjs', '.mjs', '.jsx'],
tsExtensions: ['.ts', '.cts', '.mts', '.tsx'],
jsxExtensions: ['.jsx', '.tsx'],
relaxedFiles: [
'**/*.test.*',
'**/*.spec.*',
'**/*.config.*',
'**/*.setup.*',
'**/*.story.*',
'**/__*.*',
'**/__*/**',
'**/.*.*',
'**/.*/**',
],
enableImports: true,
enableUnicorn: true,
enableReact: true,
enableTypescript: true,
enableStylistic: true,
extend: [
// ESLint configuration or (nested) array of configurations which
// will precede the rational configuration.
],
override: [
// ESLint configuration or (nested) array of configurations which
// will follow the rational configuration.
],
});