1
1
mirror of https://github.com/theoludwig/eslint-config-conventions.git synced 2024-12-18 21:45:04 +01:00
ESLint shareable config to enforce strict conventions and good code quality. https://www.npmjs.com/package/eslint-config-conventions
Go to file
Théo LUDWIG b4de437548
fix: remove eslint-plugin-import rules
We'll consider using eslint-plugin-import-x in the next major version,
https://github.com/theoludwig/eslint-config-conventions/issues/3
We remove this plugin to avoid issues like this: https://github.com/pnpm/pnpm/issues/4619
(should be resolved when ESLint v9 is fully supported)
And because of the lack of features, that eslint-plugin-import-x implement:
(https://github.com/un-ts/eslint-plugin-import-x/issues/24#issuecomment-1991605123)
2024-07-10 13:02:54 +02:00
.github build(deps): update latest 2024-07-10 12:42:53 +02:00
.husky chore: cleaner configs 2024-01-30 01:32:52 +01:00
.vscode feat: support eslint-plugin-unicorn@^50.0.0 2023-12-22 00:23:29 +01:00
test fix: allow to ignore floating promise with void operator: @typescript-eslint/no-floating-promises 2024-05-21 19:35:36 +02:00
.commitlintrc.json chore: initial commit 2022-02-19 16:05:21 +01:00
.editorconfig chore: initial commit 2022-02-19 16:05:21 +01:00
.eslintignore chore: initial commit 2022-02-19 16:05:21 +01:00
.eslintrc.json fix: remove eslint-plugin-import rules 2024-07-10 13:02:54 +02:00
.gitattributes chore: initial commit 2022-02-19 16:05:21 +01:00
.gitignore chore: replace tape with tap 2022-03-19 14:28:00 +01:00
.lintstagedrc.json chore: cleaner configs 2024-01-30 01:32:52 +01:00
.markdownlint-cli2.jsonc chore: cleaner configs 2024-01-30 01:32:52 +01:00
.npmrc feat: add npm package provenance 2023-05-13 15:41:12 +02:00
.prettierrc.json chore: better Prettier config for easier reviews 2023-10-23 23:00:22 +02:00
.releaserc.json chore: allow to publish pre-release beta version 2024-05-21 19:35:36 +02:00
CODE_OF_CONDUCT.md fix: update author - Théo LUDWIG 2023-07-02 15:57:44 +02:00
CONTRIBUTING.md fix: update author - Théo LUDWIG 2023-07-02 15:57:44 +02:00
eslintrc.json feat: support both JavaScript and TypeScript linting 2022-02-20 12:36:37 +01:00
index.js chore: better Prettier config for easier reviews 2023-10-23 23:00:22 +02:00
LICENSE docs(license): add email address 2024-01-30 01:28:25 +01:00
package-lock.json fix: remove eslint-plugin-import rules 2024-07-10 13:02:54 +02:00
package.json fix: remove eslint-plugin-import rules 2024-07-10 13:02:54 +02:00
README.md fix: remove eslint-plugin-import rules 2024-07-10 13:02:54 +02:00
tsconfig.json build(deps): update latest 2024-02-08 21:50:33 +01:00

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

Installation

npm install --save-dev \
  eslint@^8.56.0 \
  eslint-plugin-promise@^6.1.1 \
  eslint-plugin-unicorn@^53.0.0 \
  eslint-config-conventions@latest

Dependencies are:

Installation with TypeScript

If you want to use TypeScript, you also need to install:

npm install --save-dev \
  "typescript@^5.3.3" \
  "@typescript-eslint/eslint-plugin@>=6.21.0" \
  "@typescript-eslint/parser@>=6.21.0"

Dependencies are:

Configuration

.eslintrc.json (JavaScript)

{
  "extends": ["conventions"],
  "plugins": ["import", "promise", "unicorn"]
}

.eslintrc.json (TypeScript)

{
  "extends": ["conventions"],
  "plugins": ["import", "promise", "unicorn"],
  "overrides": [
    {
      "files": ["*.ts", "*.tsx"],
      "parser": "@typescript-eslint/parser",
      "plugins": ["@typescript-eslint"],
      "parserOptions": {
        "project": "./tsconfig.json"
      }
    }
  ]
}
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 .eslintrc.json 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 --report-unused-disable-directives --ignore-path .gitignore",
    "lint:prettier": "prettier . --check"
  }
}

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.

📄 License

MIT