Skip to content

theoludwig/eslint-config-conventions

eslint-config-conventions

ESLint shareable config to enforce strict conventions and good code quality.

CONTRIBUTING Licence MIT Contributor Covenant
lint action test action
Conventional Commits semantic-release npm version

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 >= 20.11.0

Installation

npm install --save-dev \
  eslint@^9.22.0 \
  eslint-plugin-promise@^7.2.1 \
  eslint-plugin-unicorn@^61.0.0 \
  eslint-plugin-import-x@^4.6.1 \
  globals@^16.0.0 \
  typescript@^5.8.3 \
  typescript-eslint@^8.32.0 \
  eslint-config-conventions@latest

Dependencies are:

Configuration

eslint.config.js

import { defineConfig } from "eslint/config"
import configConventions from "eslint-config-conventions"

export default defineConfig(...configConventions, {
  files: ["**/*.ts", "**/*.tsx"],
  languageOptions: {
    parser: typescriptESLint.parser,
    parserOptions: {
      projectService: true,
      tsconfigRootDir: import.meta.dirname,
    },
  },
})

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 eslint.config.js 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",
    "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

.oxlintrc.json (if using oxlint)

{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "extends": ["node_modules/eslint-config-conventions/.oxlintrc.json"]
}

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.

License

MIT

About

ESLint shareable config to enforce strict conventions and good code quality.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks