.github | ||
.husky | ||
.vscode | ||
test | ||
.commitlintrc.json | ||
.editorconfig | ||
.eslintignore | ||
.eslintrc.json | ||
.gitattributes | ||
.gitignore | ||
.lintstagedrc.json | ||
.markdownlint-cli2.jsonc | ||
.markdownlint.json | ||
.npmrc | ||
.prettierrc.json | ||
.releaserc.json | ||
.taprc | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
eslintrc.json | ||
index.js | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md | ||
tsconfig.json |
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 is highly inspired from 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 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 >= 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.
npm install --save-dev \
eslint@^8.9.0 \
eslint-plugin-import@^2.26.0 \
eslint-plugin-promise@^6.0.0 \
eslint-plugin-unicorn@^45.0.0 \
eslint-config-conventions@latest
Yes, this is a large number of packages. This is due to a known limitation in ESLint.
This list of dependencies are:
- ESLint
- 3 ESLint Plugins
- This package:
eslint-config-conventions
If you want to use TypeScript, you also need to install:
npm install --save-dev \
typescript@^4.8.2 \
@typescript-eslint/eslint-plugin@^5.36.1 \
@typescript-eslint/parser@^5.36.1
Dependencies are:
- TypeScript
- @typescript-eslint/eslint-plugin; ESLint rules for TypeScript.
- @typescript-eslint/parser; ESLint parser for TypeScript.
Configuration with Prettier (recommended)
You will need to install some dependencies in addition to those required:
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
{
"extends": ["conventions", "prettier"],
"plugins": ["prettier"],
"parserOptions": {
"project": "./tsconfig.json"
},
"rules": {
"prettier/prettier": "error"
}
}
Note: Please read some important instructions regarding the project
option here.
"parserOptions.project"
is only required if you use TypeScript.
package.json
{
"scripts": {
"lint:eslint": "eslint \"**/*.{js,jsx,ts,tsx}\" --ignore-path \".gitignore\"",
"lint:prettier": "prettier \".\" --check --ignore-path \".gitignore\""
}
}
Usage
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 file.