eslint-config-airbnb-flat
v0.0.12
Published
Unofficial migration of the airbnb styleguide from eslintrc format to flat config file format
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-flatConfigure
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)
