<strong><ahref="https://eslint.org/docs/developer-guide/shareable-configs">ESLint shareable config</a> to enforce strict conventions and good code quality.</strong>
**eslint-config-conventions** is a [ESLint](https://eslint.org) configuration to enforce strict conventions and good code quality, it is highly inspired from [eslint-config-standard-with-typescript](https://github.com/standard/eslint-config-standard-with-typescript) but it is **stricter** and with **no formatting rules**, **only code-quality rules**. It supports both **JavaScript** and **TypeScript**.
This configuration is mostly **for catching bugs** and **code-quality** so it is recommanded 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/) >= 16.0.0
### Installation
`npm@<7` does not automatically install `peerDependencies`, so if that's what you're using, install them manually.
Here is an example, but use it only for reference, because your decisions regarding version ranges and range specifiers may vary.
```sh
npm install --save-dev \
eslint@^8.9.0 \
eslint-plugin-import@^2.25.4 \
eslint-plugin-promise@^6.0.0 \
eslint-plugin-unicorn@^41.0.0 \
eslint-config-conventions@latest
```
Yes, this is a large number of packages. This is due to [a known limitation in ESLint](https://github.com/eslint/eslint/issues/3458).
# 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
```
#### `.eslintrc.json`
```json
{
"extends": ["conventions", "prettier"],
"plugins": ["prettier"],
"parserOptions": {
"project": "./tsconfig.json"
},
"rules": {
"prettier/prettier": "error"
}
}
```
**Note:** Please read some important instructions regarding the `project` option [here](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/README.md#configuration).