Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/theoludwig/eslint-config-conventions

ESLint shareable config to enforce strict conventions and good code quality.
https://github.com/theoludwig/eslint-config-conventions

code conventions eslint eslintconfig linter quality strict

Last synced: 3 months ago
JSON representation

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

Awesome Lists containing this project

README

        

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](https://eslint.org) 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](https://prettier.io/) 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](https://prettier.io/docs/en/comparison.html).

## ⚙️ Getting Started

### Prerequisites

[Node.js](https://nodejs.org/) >= 20.11.0

### Installation

```sh
npm install --save-dev \
eslint@^9.12.0 \
eslint-plugin-promise@^7.1.0 \
eslint-plugin-unicorn@^56.0.0 \
eslint-plugin-import-x@^4.3.1 \
globals@^15.10.0 \
typescript@~5.5.4 \
typescript-eslint@^8.8.0 \
eslint-config-conventions@latest
```

Dependencies are:

- [ESLint](https://github.com/eslint/eslint)
- [ESLint Plugins](https://eslint.org/docs/user-guide/configuring/plugins)
- [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise)
- [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn)
- [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x)
- [globals](https://github.com/sindresorhus/globals)
- [TypeScript](https://github.com/Microsoft/TypeScript)
- [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint): tooling which enables ESLint to support TypeScript.
- This package: `eslint-config-conventions`

### Configuration

#### `eslint.config.js` (JavaScript and TypeScript)

```js
// @ts-check

import typescriptESLint from "typescript-eslint"
import configConventions from "eslint-config-conventions"

export default typescriptESLint.config(...configConventions)
```

#### Configuration with [Prettier](https://prettier.io/) (recommended)

```sh
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](https://github.com/prettier/eslint-config-prettier) and [eslint-plugin-prettier](https://github.com/prettier/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](https://prettier.io/docs/en/integrating-with-linters.html)) and brings no benefits for this configuration.

#### `package.json`

```json
{
"scripts": {
"lint:eslint": "eslint . --max-warnings 0",
"lint:prettier": "prettier . --check"
}
}
```

### Usage

```sh
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](./CONTRIBUTING.md) file.

## 📄 License

[MIT](./LICENSE)