eslint-config-airbnb-flat
v0.0.12
Published
Unofficial migration of the airbnb styleguide from eslintrc format to flat config file format
Downloads
7
Maintainers
Readme
eslint-config-airbnb-flat
Unofficial migration of the airbnb styleguide from eslintrc format to flat config file format.
Setup
Install
npm i -D eslint-config-airbnb-flat
Configure
Base Example:
With "type": "module"
in package.json
(recommended):
import defineConfig from 'eslint-config-airbnb-flat/base';
export default defineConfig({
files: ['path/**/*.js'],
rules: {
// add custom rules
},
});
The default export is a function which accepts custom overrides and returns an optimized version of the eslint-config-airbnb-base config.
- All deprecated rules are disabled.
- eslint-plugin-import was replaced by eslint-plugin-i
- eslint-import-resolver-typescript is used by default to support 'imports' and 'exports' fields in package.json
- eslint-plugin-n and eslint-stylistic were added.
- typescript is auto-detected and works out-of-box (heavily inspired by Anthony Fus config).
Customize
If you want to override one of the rules of the added plugins, make sure to use the corresponding prefix:
| Original Prefix | New prefix |
| ---------------------- | -------------- |
| i/*
| import/*
|
| n/*
| node/*
|
| @typescript-eslint/*
| typescript/*
|
| @stylistic/*
| stylistic/*
|
You can also use only specific configuration files:
import { node } from 'eslint-config-airbnb-flat/configs';
export default [node];
Plain Compat
These are just the plain, unomptimized converted configs (use them at your own risk).
import airbnb from 'eslint-config-airbnb-flat/compat';
console.log(Object.keys(configs));
Roadmap
- ✅ bundle (with esbuild to esm)
- 🔳 convert (whole) codebase to typescript
- 🔳 ~~export~~ create type declarations (defineBaseConfig)
- ✅ add stylistic plugin and rules
- 🔳 add tests (esp. import/no-unresolved)
- ✅ deprecated: node/no-hide-core-modules, node/no-unsupported-features
- 🔳 node: differentiate esm and cjs globals (?)
- 🔳 support typescript in monorepo (parserOptions.project is set to 'true')
- 🔳 support React (jsx, tsx)