A comprehensive ESLint configuration preset for rotki TypeScript and JavaScript repositories. Based on @antfu/eslint-config and inspired by @sxzz/eslint-config.
- 📝 TypeScript and JavaScript support
- 🔧 Auto-fixable rules
- 🌐 Vue I18n integration
- ⚡ Editor-aware configurations
- 🛠️ Preconfigured best practices
- Node.js >=20 < 21
- ESLint >=9.10.0
- TypeScript >=5.0.0 (for TypeScript support)
Using pnpm (recommended):
pnpm add -D eslint @rotki/eslint-config
Using npm:
npm install --save-dev eslint @rotki/eslint-config
Using yarn:
yarn add -D eslint @rotki/eslint-config
Create an eslint.config.ts
file in your project root:
import rotki from '@rotki/eslint-config';
// eslint-disable-next-line import/no-default-export
export default rotki();
Add scripts to your package.json
:
{
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint . --fix"
}
}
For projects using Vue I18n, configure the plugin in your eslint.config.ts
:
import path from 'node:path';
import rotki from '@rotki/eslint-config';
// eslint-disable-next-line import/no-default-export
export default rotki({
vueI18n: {
src: path.join('app', 'src'), // Source directory
localeDir: 'locales', // Locales directory
ignores: [], // Ignored paths
},
});
For TypeScript projects, specify your tsconfig.json
location:
import rotki from '@rotki/eslint-config';
// eslint-disable-next-line import/no-default-export
export default rotki({
typescript: {
tsconfigPath: 'tsconfig.json',
},
});
This configuration includes special handling for editor environments. The following rules are disabled during editing but enabled during CI/CD:
This improves the development experience while maintaining code quality in production.
Common issues and their solutions:
- If you encounter parsing errors, ensure your TypeScript version matches the requirements
- For Vue I18n issues, verify your directory structure matches the configuration
Contributions are welcome! Please read our Contributing Guide for details.
AGPL-3.0 License © 2023- Rotki Solutions GmbH