Skip to content

code-pushup/eslint-config

Repository files navigation

@code-pushup/eslint-config

npmLicense: MIT

Recommended ESLint presets by Code PushUp.

⚙️ Configs

StackConfigDescription
javascriptjavascriptDefault config, suitable for any JavaScript/TypeScript project.
typescripttypescriptConfig for strict TypeScript projects.
nodejsnodeConfig for Node.js projects.
angularangularConfig for Angular projects.
ngrxngrxConfig for Angular projects using NgRx library.
reactreactConfig for React projects.
graphqlgraphqlConfig for GraphQL servers implemented in Node.js.
jestjestConfig for projects using Jest for testing.
vitestvitestConfig for projects using Vitest for testing.
cypresscypressConfig for projects using Cypress for testing.
playwrightplaywrightConfig for projects using Playwright for testing.
storybookstorybookConfig for projects using Storybook for UI components.
testing-libraryreact-testing-libraryConfig for projects using React Testing Library for testing.

Some configs extend other configs, as illustrated below. So, for example, extending angular config implicitly extends typescript and javascript configs as well.

 graph BT; typescript --extends--> javascript node --extends--> javascript angular --extends--> typescript ngrx --extends--> angular react --extends--> javascript graphql --extends--> node 
Loading

🏗️ Setup

To use the default config, follow these steps:

  1. You must first install all the required peer dependencies (if you haven't already):

    npm install -D eslint @eslint/js eslint-plugin-{functional,import,promise,sonarjs,unicorn} globals typescript-eslint
  2. Install @code-pushup/eslint-config with:

    npm install -D @code-pushup/eslint-config
  3. Include default config in your ESLint configuration file (usually eslint.config.js):

    importjavascriptfrom'@code-pushup/eslint-config/javascript.js';importtseslintfrom'typescript-eslint';exportdefaulttseslint.config(...javascript);

Depending on your tech stack, you may wish to extend other configs as well (listed above). This will require installing additional peer dependencies. For more details, refer to setup docs for the configs you're interested in using.

📦 Peer dependencies

All 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.

NPM packageVersionRequired
eslinteslint^9.0.0
eslint@eslint/js^9.0.0
lambdaeslint-plugin-functional^7.0.0 || ^8.0.0 || ^9.0.0
importeslint-plugin-import^2.31.0
importeslint-import-resolver-typescript^3.0.0
promiseeslint-plugin-promise>=6.4.0
sonareslint-plugin-sonarjs^1.0.4
unicorneslint-plugin-unicorn>=50.0.0
globalglobals>=14.0.0
typescripttypescript-eslint^8.0.0
graphql@graphql-eslint/eslint-plugin^3.0.0
ngrx@ngrx/eslint-plugin^18.0.0 || ^19.0.0
vitest@vitest/eslint-plugin^1.1.9
angularangular-eslint^18.0.0 || ^19.0.0 || ^20.0.0
cypresseslint-plugin-cypress>=3.3.0
jesteslint-plugin-jest^28.8.0
testeslint-plugin-jest-formatting^3.0.0
accessibilityeslint-plugin-jsx-a11y^6.10.0
nodejseslint-plugin-n>=17.0.0
playwrighteslint-plugin-playwright^2.1.0
reacteslint-plugin-react^7.36.0
react_tseslint-plugin-react-hooks>=5.0.0
rxjseslint-plugin-rxjs-x>=0.6.0
storybookeslint-plugin-storybook>=0.10.0
testing-libraryeslint-plugin-testing-library^7.1.1

🧪 Test overrides

For non-production code, some rules are disabled (or downgraded from errors to warnings).

This applies to file paths matching any of the following globs:

  • **/*.spec.?(c|m)[jt]s?(x)
  • **/*.test.?(c|m)[jt]s?(x)
  • **/__tests__/**/*.?(c|m)[jt]s?(x)
  • **/__mocks__/**/*.?(c|m)[jt]s?(x)
  • **/*.cy.?(c|m)[jt]s?(x)
  • **/*.stories.?(c|m)[jt]s?(x)
  • **/*.e2e.?(c|m)[jt]s?(x)
  • **/*.mock.?(c|m)[jt]s?(x)
  • **/*.mocks.?(c|m)[jt]s?(x)
  • **/test/**/*.?(c|m)[jt]s?(x)
  • **/tests/**/*.?(c|m)[jt]s?(x)
  • **/mocks/**/*.?(c|m)[jt]s?(x)
  • **/testing-utils/**/*.?(c|m)[jt]s?(x)
  • **/test-utils/**/*.?(c|m)[jt]s?(x)
  • **/fixtures/**/*.?(c|m)[jt]s?(x)
  • **/*.config.?(c|m)[jt]s
  • **/.prettierrc.?(c|m)[jt]s
  • **/codegen.?(c|m)[jt]s
  • **/test-setup.?(c|m)[jt]s

🫴 Contributing

Node.js installation is a prerequisite (LTS version). Install dependencies with NPM:

npm install

To execute tests:

npm test

To generate documentation:

npm run docs

About

Recommended ESLint presets by Code PushUp

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5