{"id":19639914,"url":"https://github.com/code-pushup/eslint-config","last_synced_at":"2025-07-02T01:32:55.993Z","repository":{"id":207613997,"uuid":"718618214","full_name":"code-pushup/eslint-config","owner":"code-pushup","description":"Recommended ESLint presets by Code PushUp","archived":false,"fork":false,"pushed_at":"2025-06-03T11:58:36.000Z","size":1849,"stargazers_count":10,"open_issues_count":5,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-15T04:07:44.807Z","etag":null,"topics":["conformance","eslint-config","quality-control","static-analysis"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/code-pushup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-14T13:11:11.000Z","updated_at":"2025-06-03T11:58:37.000Z","dependencies_parsed_at":"2024-05-13T10:54:02.512Z","dependency_job_id":"1421dc3c-a3cd-477a-8462-fc8176c71b07","html_url":"https://github.com/code-pushup/eslint-config","commit_stats":{"total_commits":125,"total_committers":5,"mean_commits":25.0,"dds":"0.16000000000000003","last_synced_commit":"21383ab66a7729c14fecfbc7a2fce53b9b67d7a9"},"previous_names":["code-pushup/eslint-config"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/code-pushup/eslint-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-pushup%2Feslint-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-pushup%2Feslint-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-pushup%2Feslint-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-pushup%2Feslint-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/code-pushup","download_url":"https://codeload.github.com/code-pushup/eslint-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-pushup%2Feslint-config/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262003916,"owners_count":23243347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["conformance","eslint-config","quality-control","static-analysis"],"created_at":"2024-11-11T14:03:46.175Z","updated_at":"2025-07-02T01:32:55.963Z","avatar_url":"https://github.com/code-pushup.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @code-pushup/eslint-config\n\n[![npm](https://img.shields.io/npm/v/%40code-pushup%2Feslint-config.svg)](https://www.npmjs.com/package/@code-pushup/eslint-config)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nRecommended ESLint presets by [Code PushUp](https://github.com/code-pushup/cli/tree/main/packages/cli).\n\n\u003c!-- begin autogenerated --\u003e\n\n## ⚙️ Configs\n\n|                           Stack                            | Config                                                   | Description                                                         |\n| :--------------------------------------------------------: | :------------------------------------------------------- | :------------------------------------------------------------------ |\n|    ![javascript](./docs/icons/material/javascript.png)     | [javascript](./docs/javascript.md)                       | Default config, suitable for any **JavaScript/TypeScript** project. |\n|    ![typescript](./docs/icons/material/typescript.png)     | [typescript](./docs/typescript.md)                       | Config for strict **TypeScript** projects.                          |\n|        ![nodejs](./docs/icons/material/nodejs.png)         | [node](./docs/node.md)                                   | Config for **Node.js** projects.                                    |\n|       ![angular](./docs/icons/material/angular.png)        | [angular](./docs/angular.md)                             | Config for **Angular** projects.                                    |\n|            ![ngrx](./docs/icons/other/ngrx.png)            | [ngrx](./docs/ngrx.md)                                   | Config for **Angular** projects using **NgRx** library.             |\n|         ![react](./docs/icons/material/react.png)          | [react](./docs/react.md)                                 | Config for **React** projects.                                      |\n|       ![graphql](./docs/icons/material/graphql.png)        | [graphql](./docs/graphql.md)                             | Config for **GraphQL servers** implemented in Node.js.              |\n|          ![jest](./docs/icons/material/jest.png)           | [jest](./docs/jest.md)                                   | Config for projects using **Jest** for testing.                     |\n|        ![vitest](./docs/icons/material/vitest.png)         | [vitest](./docs/vitest.md)                               | Config for projects using **Vitest** for testing.                   |\n|       ![cypress](./docs/icons/material/cypress.png)        | [cypress](./docs/cypress.md)                             | Config for projects using **Cypress** for testing.                  |\n|    ![playwright](./docs/icons/material/playwright.png)     | [playwright](./docs/playwright.md)                       | Config for projects using **Playwright** for testing.               |\n|     ![storybook](./docs/icons/material/storybook.png)      | [storybook](./docs/storybook.md)                         | Config for projects using **Storybook** for UI components.          |\n| ![testing-library](./docs/icons/other/testing-library.png) | [react-testing-library](./docs/react-testing-library.md) | Config for projects using **React Testing Library** for testing.    |\n\nSome configs extend other configs, as illustrated below. So, for example, extending `angular` config implicitly extends `typescript` and `javascript` configs as well.\n\n```mermaid\n  graph BT;\n    typescript --extends--\u003e javascript\n    node --extends--\u003e javascript\n    angular --extends--\u003e typescript\n    ngrx --extends--\u003e angular\n    react --extends--\u003e javascript\n    graphql --extends--\u003e node\n```\n\n### 🏗️ Setup\n\nTo use the default config, follow these steps:\n\n1. You must first install all the required peer dependencies (if you haven't already):\n\n   ```sh\n   npm install -D eslint @eslint/js eslint-plugin-{functional,import,promise,sonarjs,unicorn} globals typescript-eslint\n   ```\n\n2. Install `@code-pushup/eslint-config` with:\n\n   ```sh\n   npm install -D @code-pushup/eslint-config\n   ```\n\n3. Include default config in your [ESLint configuration file](https://eslint.org/docs/latest/use/configure/configuration-files) (usually `eslint.config.js`):\n\n   ```js\n   import javascript from '@code-pushup/eslint-config/javascript.js';\n   import tseslint from 'typescript-eslint';\n   \n   export default tseslint.config(...javascript);\n   ```\n\nDepending on your tech stack, you may wish to extend other configs as well ([listed above](#⚙️-configs)). This will require installing additional peer dependencies. For more details, refer to setup docs for the configs you're interested in using.\n\n#### 📦 Peer dependencies\n\nAll peer dependencies used by `@code-pushup/eslint-config` are listed below, along with their supported versions. Only the default config's dependencies are required, others are optional.\n\n|                                                            | NPM package                                                                                          |             Version              | Required |\n| :--------------------------------------------------------: | :--------------------------------------------------------------------------------------------------- | :------------------------------: | :------: |\n|        ![eslint](./docs/icons/material/eslint.png)         | [eslint](https://www.npmjs.com/package/eslint)                                                       |             `^9.0.0`             |    ✅     |\n|        ![eslint](./docs/icons/material/eslint.png)         | [@eslint/js](https://www.npmjs.com/package/@eslint/js)                                               |             `^9.0.0`             |    ✅     |\n|         ![lambda](./docs/icons/icons8/lambda.png)          | [eslint-plugin-functional](https://www.npmjs.com/package/eslint-plugin-functional)                   | `^7.0.0 \\|\\| ^8.0.0 \\|\\| ^9.0.0` |    ✅     |\n|         ![import](./docs/icons/icons8/import.png)          | [eslint-plugin-import](https://www.npmjs.com/package/eslint-plugin-import)                           |            `^2.31.0`             |    ✅     |\n|         ![import](./docs/icons/icons8/import.png)          | [eslint-import-resolver-typescript](https://www.npmjs.com/package/eslint-import-resolver-typescript) |             `^3.0.0`             |          |\n|        ![promise](./docs/icons/icons8/promise.png)         | [eslint-plugin-promise](https://www.npmjs.com/package/eslint-plugin-promise)                         |            `\u003e=6.4.0`             |    ✅     |\n|           ![sonar](./docs/icons/other/sonar.png)           | [eslint-plugin-sonarjs](https://www.npmjs.com/package/eslint-plugin-sonarjs)                         |             `^1.0.4`             |    ✅     |\n|        ![unicorn](./docs/icons/icons8/unicorn.png)         | [eslint-plugin-unicorn](https://www.npmjs.com/package/eslint-plugin-unicorn)                         |            `\u003e=50.0.0`            |    ✅     |\n|         ![global](./docs/icons/icons8/global.png)          | [globals](https://www.npmjs.com/package/globals)                                                     |            `\u003e=14.0.0`            |    ✅     |\n|    ![typescript](./docs/icons/material/typescript.png)     | [typescript-eslint](https://www.npmjs.com/package/typescript-eslint)                                 |             `^8.0.0`             |    ✅     |\n|       ![graphql](./docs/icons/material/graphql.png)        | [@graphql-eslint/eslint-plugin](https://www.npmjs.com/package/@graphql-eslint/eslint-plugin)         |             `^3.0.0`             |          |\n|            ![ngrx](./docs/icons/other/ngrx.png)            | [@ngrx/eslint-plugin](https://www.npmjs.com/package/@ngrx/eslint-plugin)                             |      `^18.0.0 \\|\\| ^19.0.0`      |          |\n|        ![vitest](./docs/icons/material/vitest.png)         | [@vitest/eslint-plugin](https://www.npmjs.com/package/@vitest/eslint-plugin)                         |             `^1.1.9`             |          |\n|       ![angular](./docs/icons/material/angular.png)        | [angular-eslint](https://www.npmjs.com/package/angular-eslint)                                       |      `^18.0.0 \\|\\| ^19.0.0`      |          |\n|       ![cypress](./docs/icons/material/cypress.png)        | [eslint-plugin-cypress](https://www.npmjs.com/package/eslint-plugin-cypress)                         |            `\u003e=3.3.0`             |          |\n|          ![jest](./docs/icons/material/jest.png)           | [eslint-plugin-jest](https://www.npmjs.com/package/eslint-plugin-jest)                               |            `^28.8.0`             |          |\n|           ![test](./docs/icons/icons8/test.png)            | [eslint-plugin-jest-formatting](https://www.npmjs.com/package/eslint-plugin-jest-formatting)         |             `^3.0.0`             |          |\n|  ![accessibility](./docs/icons/icons8/accessibility.png)   | [eslint-plugin-jsx-a11y](https://www.npmjs.com/package/eslint-plugin-jsx-a11y)                       |            `^6.10.0`             |          |\n|        ![nodejs](./docs/icons/material/nodejs.png)         | [eslint-plugin-n](https://www.npmjs.com/package/eslint-plugin-n)                                     |            `\u003e=17.0.0`            |          |\n|    ![playwright](./docs/icons/material/playwright.png)     | [eslint-plugin-playwright](https://www.npmjs.com/package/eslint-plugin-playwright)                   |             `^2.1.0`             |          |\n|         ![react](./docs/icons/material/react.png)          | [eslint-plugin-react](https://www.npmjs.com/package/eslint-plugin-react)                             |            `^7.36.0`             |          |\n|      ![react_ts](./docs/icons/material/react_ts.png)       | [eslint-plugin-react-hooks](https://www.npmjs.com/package/eslint-plugin-react-hooks)                 |            `\u003e=5.0.0`             |          |\n|            ![rxjs](./docs/icons/other/rxjs.png)            | [eslint-plugin-rxjs-x](https://www.npmjs.com/package/eslint-plugin-rxjs-x)                           |            `\u003e=0.6.0`             |          |\n|     ![storybook](./docs/icons/material/storybook.png)      | [eslint-plugin-storybook](https://www.npmjs.com/package/eslint-plugin-storybook)                     |            `\u003e=0.10.0`            |          |\n| ![testing-library](./docs/icons/other/testing-library.png) | [eslint-plugin-testing-library](https://www.npmjs.com/package/eslint-plugin-testing-library)         |             `^7.1.1`             |          |\n\n### 🧪 Test overrides\n\nFor non-production code, some rules are disabled (or downgraded from errors to warnings).\n\nThis applies to file paths matching any of the following globs:\n\n- `**/*.spec.?(c|m)[jt]s?(x)`\n- `**/*.test.?(c|m)[jt]s?(x)`\n- `**/__tests__/**/*.?(c|m)[jt]s?(x)`\n- `**/__mocks__/**/*.?(c|m)[jt]s?(x)`\n- `**/*.cy.?(c|m)[jt]s?(x)`\n- `**/*.stories.?(c|m)[jt]s?(x)`\n- `**/*.e2e.?(c|m)[jt]s?(x)`\n- `**/*.mock.?(c|m)[jt]s?(x)`\n- `**/*.mocks.?(c|m)[jt]s?(x)`\n- `**/test/**/*.?(c|m)[jt]s?(x)`\n- `**/tests/**/*.?(c|m)[jt]s?(x)`\n- `**/mocks/**/*.?(c|m)[jt]s?(x)`\n- `**/testing-utils/**/*.?(c|m)[jt]s?(x)`\n- `**/test-utils/**/*.?(c|m)[jt]s?(x)`\n- `**/fixtures/**/*.?(c|m)[jt]s?(x)`\n- `**/*.config.?(c|m)[jt]s`\n- `**/.prettierrc.?(c|m)[jt]s`\n- `**/codegen.?(c|m)[jt]s`\n- `**/test-setup.?(c|m)[jt]s`\n\n\u003c!-- end autogenerated --\u003e\n\n## 🫴 Contributing\n\nNode.js installation is a prerequisite (LTS version). Install dependencies with NPM:\n\n```sh\nnpm install\n```\n\nTo execute tests:\n\n```sh\nnpm test\n```\n\nTo generate documentation:\n\n```sh\nnpm run docs\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-pushup%2Feslint-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode-pushup%2Feslint-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-pushup%2Feslint-config/lists"}