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-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/react
Lints ES6+ and React. Includes:
npm install --save-dev eslint eslint-config-tamia
eslint.config.mjs:
import tamiaReact from 'eslint-config-tamia/react';
export default [...tamiaReact];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.
 sapegin
sapegin