How do I:
I struggled with this for a couple of hours before figuring out a pretty clean solution. It doesn't rely on FlatCompat (which would keep legacy config alive) so thought I'd document it here for the benefit of others facing the same challenge:
ESLint flat config is quite different from the previous format. It drove me nuts at first but it's actually a fair bit simpler once it clicks, To help understand the "flat config" the following pointers helped me:
.eslintignore
is no longer available)Setup for VSCode - at the time of writing you'll need:
v3.0.5
or above (this currently requires "switch to pre-release version") in the plugin's installation page"eslint.useFlatConfig": true
to your settings.json
(this was previously eslint.experimental.useFlatConfig
)Install the following dependencies:
yarn add --dev \
eslint \
@eslint/js \
typescript-eslint \
--
Use the following eslint.config.js
file to get you started (locate it alongside package.json
). This provides defaults from https://typescript-eslint.io/getting-started/. This config additionally allows you to add ignored files, which is useful because .eslintignore
is no longer available. NB the config is 'just Javascript' so you can make additional changes. This uses module.exports
which avoids the need to add type: "module"
to package.json
:
const eslint = require('@eslint/js');
const tseslint = require('typescript-eslint');
const ignores = [
'**/*.js',
];
module.exports = tseslint.config(
{
...eslint.configs.recommended,
ignores,
},
...tseslint.configs.recommended.map((config) => ({
...config,
ignores,
})),
);
Pro:
Con:
I hope this saves you some time figuring out how to make the transition.