ESLint shareable config to enforce strict conventions and good code quality.
## 📜 About **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 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/) >= 18.0.0 ### Installation ```sh npm install --save-dev \ eslint@^8.53.0 \ eslint-plugin-import@^2.29.0 \ eslint-plugin-promise@^6.1.1 \ eslint-plugin-unicorn@^50.0.0 \ eslint-config-conventions@latest ``` This list of dependencies are: - [ESLint](https://github.com/eslint/eslint) - 3 [ESLint Plugins](https://eslint.org/docs/user-guide/configuring/plugins) - [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) - [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise) - [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) - This package: `eslint-config-conventions` If you want to use **TypeScript**, you also need to install: ```sh npm install --save-dev \ typescript@^5.2.2 \ @typescript-eslint/eslint-plugin@^6.11.0 \ @typescript-eslint/parser@^6.11.0 ``` Dependencies are: - [TypeScript](https://github.com/Microsoft/TypeScript) - [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint): ESLint rules for TypeScript. - [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint): ESLint parser for TypeScript. ### Configuration with [Prettier](https://prettier.io/) (recommended) You will need to install some dependencies in addition to those required: ```sh npm install --save-dev prettier eslint-config-prettier eslint-plugin-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 ``` #### `.eslintrc.json` ```json { "extends": ["conventions", "prettier"], "plugins": ["prettier"], "parser": "@typescript-eslint/parser", "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). `"parserOptions.project"` is only required if you use **TypeScript**. #### `package.json` ```json { "scripts": { "lint:eslint": "eslint . --max-warnings 0 --report-unused-disable-directives --ignore-path .gitignore", "lint:prettier": "prettier . --check" } } ``` ### Usage ```sh npm run lint:eslint # or to apply automatic fixes to code npm run lint:eslint -- --fix # Validate code formatting in all supported languages by Prettier npm 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)