ESLint configuration, following the styleguide of aiven.io
npm install @aivenio/eslint-config-aivenOur internal ESLint and prettier configuration. We want to autoformat code like prettier does, but also do more static checks that eslint does. To do both, we use eslint-plugin-prettier and eslint acts as the frontend to check and autofix style and other issues.
The configuration is split into:
- @aivenio/eslint-config-aiven
- Recommended base configuration for TypeScript.
- @aivenio/eslint-config-aiven/react
- Base + React additions.
- @aivenio/eslint-config-aiven/typescript-type-checked
- Base + TS rules that require typed linting
1. npm install @aivenio/eslint-config-aiven
2. Create an eslint.config.js file in your repository root and select which configuration to use:
``js
import baseConfig from '@aivenio/eslint-config-aiven';
import { defineConfig } from 'eslint/config';
export default defineConfig(baseConfig, { / further configuration / });
// Or choose one of the variants:
// import reactConfig from '@aivenio/eslint-config-aiven/react';
// import typeCheckedConfig from '@aivenio/eslint-config-aiven/typescript-type-checked';
// export default defineConfig(reactConfig, typeCheckedConfig, { / further configuration / });
`
When using eslint-config-aiven/react, install the required peer dependencies: eslint-plugin-react, eslint-plugin-react-hooks and eslint-plugin-jsx-a11y.
3. Setup npm scripts in package.json
`js`
"eslint:fix": "eslint --fix \"src/*/.{ts,tsx}\"",
"eslint:check": "eslint \"src/*/.{ts,tsx}\"",
4. Remember to setup a CI task to lint source code. See .github/workflows/test.yml for a GH action example.
1. Follow all steps in "Install recommended base" first
2. Install additional peer dependencies
`bash`
npm i --save-dev eslint-plugin-jsx-a11y
npm i --save-dev eslint-plugin-react
3. Change the eslint.config.js in your repository to have the following contents:
`js
import reactConfig from '@aivenio/eslint-config-aiven/react';
import { defineConfig } from 'eslint/config';
export default defineConfig(reactConfig, { / further configuration / });
`
Locally:
1. Run npm run release -- --bump _(all the dashes are needed)_ where bump is one of major, minor or patch`.
This command will automatically checkout a release branch, commit the version bump, and open your browser to submit a PR.
2. Review the PR created, and merge it to main. GH actions will handle the rest.