eslint-config-conventions
ESLint shareable config to enforce strict conventions and good code quality.
📜 About
eslint-config-conventions is a ESLint configuration to enforce strict conventions and good code quality. It supports both JavaScript and TypeScript.
This configuration is mostly for catching bugs and code-quality so it is recommended to use it with Prettier for a consistent code style, it works with any .prettierrc.json configuration.
More information about formatting rules vs code-quality rules can be found on Prettier vs. Linters.
⚙️ Getting Started
Prerequisites
Node.js >= 18.0.0
Installation
npm install --save-dev \
  eslint@^8.56.0 \
  eslint-plugin-promise@^6.1.1 \
  eslint-plugin-unicorn@^53.0.0 \
  eslint-config-conventions@latest
Dependencies are:
- ESLint
- ESLint Plugins
- This package: eslint-config-conventions
Installation with TypeScript
If you want to use TypeScript, you also need to install:
npm install --save-dev \
  "typescript@^5.3.3" \
  "@typescript-eslint/eslint-plugin@>=6.21.0" \
  "@typescript-eslint/parser@>=6.21.0"
Dependencies are:
- TypeScript
- @typescript-eslint/eslint-plugin: ESLint rules for TypeScript.
- @typescript-eslint/parser: ESLint parser for TypeScript.
Configuration
.eslintrc.json (JavaScript)
{
  "extends": ["conventions"],
  "plugins": ["promise", "unicorn"]
}
.eslintrc.json (TypeScript)
{
  "extends": ["conventions"],
  "plugins": ["promise", "unicorn"],
  "overrides": [
    {
      "files": ["*.ts", "*.tsx"],
      "parser": "@typescript-eslint/parser",
      "plugins": ["@typescript-eslint"],
      "parserOptions": {
        "project": "./tsconfig.json"
      }
    }
  ]
}
Configuration with Prettier (recommended)
npm install --save-dev prettier
# Create an empty config file to let editors and other tools know you are using Prettier
# You can personalize it with your own rules
echo "{}" > .prettierrc.json
That's all! No need to update the .eslintrc.json configuration.
We discourage usage of eslint-config-prettier and eslint-plugin-prettier, as eslint-config-conventions doesn't include any stylistic rules, and including these packages has several drawbacks (listed in Integrating with Linters) and brings no benefits for this configuration.
package.json
{
  "scripts": {
    "lint:eslint": "eslint . --max-warnings 0 --report-unused-disable-directives --ignore-path .gitignore",
    "lint:prettier": "prettier . --check"
  }
}
Usage
node --run lint:eslint
# or to apply automatic fixes to code
node --run lint:eslint -- --fix
# Validate code formatting in all supported languages by Prettier
node --run lint:prettier
💡 Contributing
Anyone can help to improve the project, submit a Feature Request, a bug report or even correct a simple spelling mistake.
The steps to contribute can be found in the CONTRIBUTING.md file.