The eslint config that we use at Etch
npm i -D eslint@^9.0.0 prettier @etchteam/eslint-config
Create an eslint.config.js
file in your project root:
import etchConfig from '@etchteam/eslint-config';
export default etchConfig;
Run the following:
npm i -D husky lint-staged
echo "module.exports = { '*.{ts,tsx,js,jsx,yml,yaml,json}': 'eslint --fix' };" > lint-staged.config.cjs
npx husky init
echo "npx --no-install -- lint-staged" > .husky/pre-commit
Add the following to your lint-staged config:
'*.{ts,tsx,js,jsx,yml,yaml,json}': 'eslint --fix'
Run the following:
mkdir .vscode
echo "{ \"editor.formatOnSave\": false, \"editor.codeActionsOnSave\": { \"source.fixAll.eslint\": \"explicit\" } }" > .vscode/settings.json
# The VSCode prettier extension doesn't read the eslint config, so specific
# prettier overrides need to go in a prettier config for format on save
echo "export default { singleQuote: true };" > prettier.config.js
Add the following to .vscode/settings.json
:
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
}
Run the following:
# The VSCode prettier extension doesn't read the eslint config, so specific
# prettier overrides need to go in a prettier config for format on save
echo "export default { singleQuote: true };" > prettier.config.js
If you're upgrading from ESLint 8, follow these steps:
npm install eslint@^9.0.0 @etchteam/eslint-config@^1.0.0
Remove your old .eslintrc.*
files and create a new eslint.config.js
:
import etchConfig from '@etchteam/eslint-config';
export default etchConfig;
ESLint 9 uses flat config by default, so your existing npm scripts should work without changes.
- Flat config format - More explicit and performant
- ESLint 9 compatibility - Latest features and fixes
- Updated plugins - All plugins updated to latest versions
- Reduced compatibility layer - Only 3 plugins need compatibility wrappers