eslint-config-tamia
This package provides a shared ESLint config that I use on all my projects.
Should be used with Prettier, has no own code style rules.
All presets include the following ESLint plugins:
- @eslint-community/eslint-plugin-eslint-comments
- eslint-plugin-de-morgan
- eslint-plugin-simple-import-sort
- eslint-plugin-unicorn
- eslint-plugin-vitest
- eslint-plugin-washing-code
Usage
We export three ESLint configurations:
eslint-config-tamia
Base set of rules for JavaScript.
npm install --save-dev eslint eslint-config-tamia
eslint.config.mjs:
import tamia from 'eslint-config-tamia';
export default [...tamia];
eslint-config-tamia/typescript
Lints TypeScript. Includes:
npm install --save-dev eslint eslint-config-tamia
eslint.config.mjs:
import tamiaTypeScript from 'eslint-config-tamia/typescript';
export default [...tamiaTypeScript];
This config uses types for linting, so you need to have tsconfig.json that looks like this:
{
"compilerOptions": {
"esModuleInterop": true,
"strict": true
},
"include": ["src/*", "*.ts"]
}
eslint-config-tamia/typescript-react
Lints TypeScript and React. Includes:
npm install --save-dev eslint eslint-config-tamia eslint-plugin-jsx-a11y
eslint.config.mjs:
import tamiaTypeScriptReact from 'eslint-config-tamia/typescript-react';
import jsxAccessibility from 'eslint-plugin-jsx-a11y';
export default [
...tamiaTypeScriptReact,
jsxAccessibility.flatConfigs.strict
];
This config uses types for linting, so you need to have tsconfig.json that looks like this:
{
"compilerOptions": {
"jsx": "preserve",
"esModuleInterop": true,
"strict": true
},
"include": ["src/*", "*.ts"]
}
Code style at a glance
Tab indentation.- Single-quotes.
- Semicolons.
- Declare variables just before their first usage.
- Multiple variable statements over multiple variable in a single statement.
- Make
const, notvar. - Use
===and!==over==and!=. - Return early.
- Limit line lengths to 80 chars.
- Prefer readability over religion.
- Use ES6.
Example:
function eatFood(food) {
if (food.length === 0) {
return ['No food'];
}
return food.map(dish => `No ${dish.toLowerCase()}`);
}
const food = ['Pizza', 'Burger', 'Coffee'];
console.log(eatFood(food));
See ESlint config docs for more information.