Package detail

@zendeskgarden/eslint-config

zendeskgarden19.6kApache-2.045.0.0

Garden ESLint config

eslint, garden, zendesk

readme

Garden ESLint Config npm version Build Status

:seedling: Garden is the design system by Zendesk

This package exposes a shareable ESLint config and a selection of associated plugins.

Installation

npm install eslint @zendeskgarden/eslint-config

Usage

Add a eslint.config.mjs to your project like this:

import config from '@zendeskgarden/eslint-config';

export default config;

Now Garden linting rules will apply to your project. See the ESLint Documentation for more details on using shareable configuration files.

Plugins

The following shared plugins are also available.

Jest

Install the following dependency in addition to those listed above.

npm install jest

Update the default configuration.

import config from '@zendeskgarden/eslint-config';
import jestPlugin from '@zendeskgarden/eslint-config/plugins/jest.js';

export default [...config, jestPlugin];

In some cases, it may be useful to limit the scope of the Jest rules via files.

export default [
  ...config,
  {
    files: ['**/*.spec.*'],
    ...jestPlugin
  }
];

React

The React plugin bundles rules for React, React Hooks, and JSX accessibility. Install the following dependency in addition to those listed above.

npm install react

Update the default configuration.

import config from '@zendeskgarden/eslint-config';
import reactPlugin from '@zendeskgarden/eslint-config/plugins/react.js';

export default [...config, reactPlugin];

TypeScript

Install the following dependency in addition to those listed above.

npm install typescript

Update the default configuration.

import config from '@zendeskgarden/eslint-config';
import typescriptPlugin from '@zendeskgarden/eslint-config/plugins/typescript.js';

export default [...config, typescriptPlugin];

For mixed JS and TS codebases, it may be useful to limit the scope of the TypeScript rules via files.

export default [
  ...config,
  {
    files: ['**/*.{ts, tsx}'],
    ...typescriptPlugin
  }
];

The typescript plugin covers rules for syntax checking. An additional typescript-type-checked plugin provides rules based on semantics. The typescript-type-checked plugin requires type information in order to execute. Set languageOptions.parserOptions.project to a valid TSConfig for the project. See typescript-eslint documentation for details.

export default [
  ...config,
  typescriptPlugin,
  typescriptTypeCheckedPlugin,
  {
    languageOptions: {
      parserOptions: {
        project: ['./tsconfig.json'],
        requireConfigFile: false
      }
    }
  }
];

Resources

Shout-outs for a mostly reasonable set of lint rules go to:

Contribution

Thanks for your interest in Garden! Community involvement helps make our design system fresh and tasty for everyone.

Got issues with what you find here? Please feel free to create an issue.

If you'd like to take a crack at making some changes, please follow our contributing documentation for details needed to submit a PR.

Community behavior is benevolently ruled by a code of conduct. Please participate accordingly.

License

Copyright 2024 Zendesk

Licensed under the Apache License, Version 2.0

changelog

Changelog

All notable changes to this project will be documented in this file. See commit-and-tag-version for commit guidelines.

45.0.0 (2024-12-17)

⚠ BREAKING CHANGES

  • deps: adds new typescript-type-checked rules added in typescript-eslint v8.15.0...
  • @typescript-eslint/no-unsafe-type-assertion
  • @typescript-eslint/related-getter-setter-pairs

Bug Fixes

  • deps: update all non-major dependencies (#242) (2d3819b)
  • deps: update react monorepo (major) (#243) (09bbd82)

44.0.1 (2024-09-24)

Bug Fixes

  • react: plugin rules eslint v9 compatibility for react-hooks (#240) (41c291d)

44.0.0 (2024-09-12)

⚠ BREAKING CHANGES

  • deps: rules were removed, added, and enabled for the typescript plugins.

  • typescript

    • ban-types (removed)
    • no-empty-interface (removed)
    • no-loss-of-precision (removed)
    • no-restricted-types (added: error)
    • no-var-requires (removed)
  • typescript-type-checked
    • deprecation/deprecation (removed)
    • no-deprecated (added: warning)
  • deps: adds and enables new plugin rules.

  • react plugin

    • react/forward-ref-uses-ref
  • typescript plugin
    • @typescript-eslint/no-empty-object-type
    • @typescript-eslint/no-unnecessary-parameter-property-assignment
    • @typescript-eslint/no-unsafe-function-type
    • @typescript-eslint/no-wrapper-object-types
  • typescript-type-checked plugin

    • @typescript-eslint/no-unnecessary-type-parameters (warning)
  • deps: update all non-major dependencies (#237) (e68a82a)

Bug Fixes

  • deps: update dependency typescript-eslint to v8 (#239) (9884229)

43.0.0 (2024-08-12)

⚠ BREAKING CHANGES

  • throws a warning for any @deprecated usage

Features

Bug Fixes

  • scripts: conditional branch deploy with Jekyll disabled (#235) (006359a)

42.0.0 (2024-06-20)

⚠ BREAKING CHANGES

  • deps: add new jest/prefer-jest-mocked rule

  • deps: update all non-major dependencies (#233) (18e50b2)

41.0.0 (2024-06-12)

⚠ BREAKING CHANGES

  • deps: the upgrade to ESLint v9 requires the new flat config format. Additional features include:

  • updated rule parity with eslint and all bundled plugins – jest, jsx-a11y, node, react, react-hooks, and typescript-eslint

  • moved plugin peer dependencies to direct dependencies, per updated eslint documentation

See the updated README for details.

  • deps: update dependency eslint to v9 (#229) (29526b6)

40.0.0 (2024-05-15)

⚠ BREAKING CHANGES

  • deps: updated dependency requirements

@typescript-eslint/eslint-plugin:

  • removes rule no-new-symbol
  • adds no-new-native-nonconstructor
  • deps: update dependency eslint-plugin-n to v17 (#231)

  • deps: update all non-major dependencies (#228) (bc1d75d)

  • deps: update dependency eslint-plugin-n to v17 (#231) (53aac80)

39.0.1 (2024-04-01)

Bug Fixes

  • moves use-unknown-in-catch-callback-variable to semantics (#227) (5b47440)

39.0.0 (2024-03-29)

38.0.0 (2024-02-15)

⚠ BREAKING CHANGES

  • deps: updated dependency requirements

  • bumped @typescript-eslint/eslint-plugin and @typescript-eslint/eslint-parser minimum version requirements for ESLint, NodeJS, and TS

  • deps: updated dependency requirements

  • added new @typescript-eslint/eslint-plugin 6.21.0 rules: prefer-find

  • deps: update all non-major dependencies (#222) (510138d)
  • deps: update typescript-eslint monorepo to v7 (#223) (baf9c81)

37.0.0 (2024-01-19)

⚠ BREAKING CHANGES

  • deps: updated dependency requirements

  • added new @typescript-eslint/eslint-plugin 6.19.0 rules: no-array-delete and prefer-promise-reject-errors

  • deps: update all non-major dependencies (#215) (5341cb6)

36.0.0 (2023-12-21)

⚠ BREAKING CHANGES

35.0.0 (2023-09-26)

⚠ BREAKING CHANGES

  • deps: updated peer dependency requirements

  • removed deprecated and added new no-object-constructor eslint 8.50.0 rule

  • added new class-methods-use-this @typescript-eslint/eslint-plugin 6.2.0 rule
  • upgraded from yarn to npm

  • deps: update all non-major dependencies (#212) (6865e54)

34.0.0 (2023-07-18)

⚠ BREAKING CHANGES

33.0.0 (2023-07-12)

⚠ BREAKING CHANGES

  • deps: update all non-major dependencies (#208)
  • sets @typescript-eslint/no-duplicate-type-constituents to error
  • sets @typescript-eslint/no-unsafe-enum-comparison to error

  • deps: update all non-major dependencies (#208) (7fc46aa)

32.0.0 (2023-02-02)

⚠ BREAKING CHANGES

  • rules: adds new rules missed in v31 (#205)

  • rules: adds new rules missed in v31 (#205) (02bba24)

31.0.0 (2023-01-31)

⚠ BREAKING CHANGES

  • deps: update all non-major dependencies (#202)

  • deps: update all non-major dependencies (#202) (8c195c3)

30.0.0 (2022-12-13)

⚠ BREAKING CHANGES

  • deps: deps: adds new eslint rules:
  • sets no-empty-static-block to error
  • sets no-new-native-nonconstructor to error

deps: adds new typescript-eslint rules:

  • sets no-unsafe-declaration-merging to error

Co-authored-by: renovate[bot] 29139614+renovate[bot]@users.noreply.github.com Co-authored-by: george treviranus geowtrev@gmail.com

  • deps: update all non-major dependencies (#201) (c5da9ea)

29.0.0 (2022-10-05)

⚠ BREAKING CHANGES

  • deps: remove jest v27.0.0 jest/no-jest-import rule

Co-authored-by: renovate[bot] 29139614+renovate[bot]@users.noreply.github.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: update all non-major dependencies (#198)

  • deps: update all non-major dependencies (#198) (e870d42)

  • deps: update dependency eslint-plugin-jest to v27 (#200) (9b4d0b2)

28.0.0 (2022-04-11)

⚠ BREAKING CHANGES

  • deps: update all non-major dependencies (#192)

  • deps: update all non-major dependencies (#192) (2c9e964)

27.0.1 (2022-02-25)

27.0.0 (2021-12-28)

⚠ BREAKING CHANGES

  • deps: - sets eslint peer dependency to ^8.5.0
  • adds prefer-object-has-own rule set to warning

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

26.0.0 (2021-11-17)

⚠ BREAKING CHANGES

  • deps: add new eslint-plugin-react v7.27.0 rules:
  • no-unused-class-component-methods
  • no-arrow-function-lifecycle
  • no-invalid-html-attribute

Plugin dependency versions:

  • @typescript-eslint/eslint-plugin ^5.0.0
  • @typescript-eslint/parser ^5.0.0
  • eslint-plugin-jest ^25.2.0
  • eslint-plugin-jsx-a11y ^6.4.0
  • eslint-plugin-react ^7.27.0
  • eslint-plugin-react-hooks ^4.3.0

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: update all non-major dependencies (#180) (ec3c4d6)

25.0.0 (2021-11-05)

⚠ BREAKING CHANGES

  • deps: upgrade to eslint 8.1.0 with new no-unused-private-class-members rule.

Plugin dependency versions:

  • @typescript-eslint/eslint-plugin ^5.0.0
  • @typescript-eslint/parser ^5.0.0
  • eslint-plugin-jest ^25.2.0
  • eslint-plugin-jsx-a11y ^6.4.0
  • eslint-plugin-react ^7.26.0
  • eslint-plugin-react-hooks ^4.2.1-alpha

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: update all non-major dependencies (#178) (687ec87)

24.0.0 (2021-10-19)

⚠ BREAKING CHANGES

  • switch from babel-eslint to @babel/eslint-parser (#176)

  • switch from babel-eslint to @babel/eslint-parser (#176) (59d9042)

23.0.0 (2021-10-16)

⚠ BREAKING CHANGES

  • deps: upgrade to eslint v8.0.0.

Plugin dependency versions:

  • @typescript-eslint/eslint-plugin ^5.0.0
  • @typescript-eslint/parser ^5.0.0
  • eslint-plugin-jest ^25.2.0
  • eslint-plugin-jsx-a11y ^6.4.0
  • eslint-plugin-react ^7.26.0
  • eslint-plugin-react-hooks ^4.2.0

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: add jest/require-hook rule.

Plugin dependency versions:

  • @typescript-eslint/eslint-plugin ^4.33.0
  • eslint-plugin-jest ^24.7.0
  • eslint-plugin-jsx-a11y ^6.4.0
  • eslint-plugin-react ^7.26.0
  • eslint-plugin-react-hooks ^4.2.0

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: update all non-major dependencies (#172) (daf7799)
  • deps: update dependency eslint to v8 (#173) (c22840b)

22.0.0 (2021-10-07)

⚠ BREAKING CHANGES

  • added
  • @typescript-eslint/no-non-null-asserted-nullish-coalescing
  • @typescript-eslint/no-restricted-imports
  • jest/prefer-expect-resolves
  • jest/prefer-to-be
  • react/no-namespace
  • add react/prefer-exact-props rule.

Plugin dependency versions:

- `@typescript-eslint/eslint-plugin` ^4.30.0
- `eslint-plugin-jsx-a11y` ^6.4.0
- `eslint-plugin-react` ^7.25.0
- `eslint-plugin-react-hooks` ^4.2.0

Features

  • add new rules for jest, react, and typescript (#171) (82f34e8)
  • add react/prefer-exact-props rule (#165) (59964c6)

21.0.0 (2021-08-17)

⚠ BREAKING CHANGES

  • add @typescript-eslint/prefer-return-this-type rule.

Plugin dependency versions:

  • @typescript-eslint/eslint-plugin ^4.29.0
  • eslint-plugin-jsx-a11y ^6.4.0
  • eslint-plugin-react ^7.22.0
  • eslint-plugin-react-hooks ^4.2.0

Features

  • add @typescript-eslint/prefer-return-this-type rule (#161) (d37238f)

20.0.0 (2021-04-26)

⚠ BREAKING CHANGES

  • add @typescript-eslint/no-unsafe-argument rule.

Plugin dependency versions:

  • @typescript-eslint/eslint-plugin ^4.22.0
  • eslint-plugin-jsx-a11y ^6.4.0
  • eslint-plugin-react ^7.22.0
  • eslint-plugin-react-hooks ^4.2.0

Features

  • add @typescript-eslint/no-unsafe-argument rule (#147) (5255332)

Bug Fixes

  • prevent husky from running on postinstall (#143) (40d4cca)

19.0.0 (2021-01-20)

⚠ BREAKING CHANGES

  • deps: add @typescript-eslint/object-curly-spacing rule.

Plugin dependency versions:

  • @typescript-eslint/eslint-plugin ^4.14.0
  • eslint-plugin-jsx-a11y ^6.4.0
  • eslint-plugin-react ^7.22.0
  • eslint-plugin-react-hooks ^4.2.0

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: update all non-major dependencies (#135) (48bc8b7)

18.0.0 (2021-01-06)

⚠ BREAKING CHANGES

  • deps: add react/jsx-no-constructed-context-values and @typescript-eslint/sort-type-union-intersection-members rules.

Plugin dependency versions:

  • @typescript-eslint/eslint-plugin ^4.12.0
  • eslint-plugin-jsx-a11y ^6.4.0
  • eslint-plugin-react ^7.22.0
  • eslint-plugin-react-hooks ^4.2.0

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: update all non-major dependencies (#134) (d561d8b)

17.1.0 (2021-01-04)

Features

  • add TypeScript, React, and Jest plugins (#132) (8762f52)

17.0.0 (2020-12-22)

⚠ BREAKING CHANGES

  • deps: add new no-unsafe-optional-chaining rule

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: update all non-major dependencies (#130) (8d83e36)

16.0.0 (2020-12-05)

⚠ BREAKING CHANGES

  • deps: update dependency eslint to v7.14.0 (#128)

  • deps: update dependency eslint to v7.14.0 (#128) (523dee3)

15.0.0 (2020-07-29)

⚠ BREAKING CHANGES

  • deps: update dependency eslint to v7.5.0 (#118)

  • deps: update dependency eslint to v7.5.0 (#118) (d906672)

14.0.1 (2020-07-15)

Bug Fixes

14.0.0 (2020-07-07)

⚠ BREAKING CHANGES

  • deps: adds rules for no-promise-executor-return and no-unreachable-loop.

Co-authored-by: Renovate Bot bot@renovateapp.com Co-authored-by: Jonathan Zempel jzempel@gmail.com

  • deps: update dependency eslint to 7.4.0 (#112) (1ebb3c8)

13.0.0 (2020-05-26)

⚠ BREAKING CHANGES

  • deps: update dependency eslint to v7.1.0 (#108)

  • deps: update dependency eslint to v7.1.0 (#108) (64b8b3d)

12.0.1 (2020-05-16)

Bug Fixes

  • dial back overly aggressive node plugin rules (#106) (d75d147)

12.0.0 (2020-05-12)

⚠ BREAKING CHANGES

  • deps: peer dependencies require eslint: ^7.0.0 and eslint-plugin-node: ^11.1.0

  • deps: update dependency eslint to v7 (#104) (058a414)

11.0.4 (2020-04-15)

Bug Fixes

  • space-before-function-paren handling for async functions (#100) (14e5b88)
  • use default CircleCI node_modules cache (#97) (d69416a)

11.0.3 (2020-03-05)

11.0.2 (2020-03-05)

11.0.1 (2019-12-19)

Bug Fixes

11.0.0 (2019-11-25)

⚠ BREAKING CHANGES

  • deps: added
  • grouped-accessor-pairs
  • no-constructor-return
  • no-dupe-else-if
  • no-setter-return
  • prefer-exponentiation-operator

  • deps: update all non-major dependencies (#82) (5da6506)

10.0.0 (2019-09-17)

⚠ BREAKING CHANGES

  • deps: add new rules that require eslint 6.4.0 or greater.

  • deps: update dependency eslint to v6.4.0 (#75) (db633aa)

9.0.0 (2019-09-03)

⚠ BREAKING CHANGES

  • deps: add new reportUnusedDisableDirectives configuration setting (warns if detected)

  • deps: update dependency eslint to v6.3.0 (#73) (b985a80)

8.0.0 (2019-08-21)

⚠ BREAKING CHANGES

  • deps: peer dependency bumped to eslint: ^6.2.0 and updated config will throw a lint error on inconsistent function-call-argument-newline rule.

  • deps: update dependency eslint to v6.2.1 (#68) (c5104e1)

7.2.2 (2019-07-01)

7.2.1 (2019-04-02)

7.2.0 (2019-03-06)

7.1.2 (2019-02-21)

7.1.1 (2019-02-04)

7.1.0 (2019-01-09)

Features

  • upgrade to support eslint 5.12.x (#39) (3c93aee)

7.0.10 (2018-12-10)

7.0.9 (2018-11-14)

7.0.8 (2018-10-30)

7.0.7 (2018-10-15)

7.0.6 (2018-09-24)

7.0.5 (2018-09-04)

7.0.4 (2018-08-20)

7.0.3 (2018-08-15)

Bug Fixes

  • update the eslint peer dependency (#20) (1a8203f)

7.0.2 (2018-08-13)

7.0.1 (2018-08-06)

7.0.0 (2018-08-06)

Features

BREAKING CHANGES

  • existing code may fail with the addition of the following new rule error checking:
  • require-unicode-regexp
  • no-async-promise-executor
  • no-misleading-character-class
  • require-atomic-updates

6.0.0 (2018-06-11)

Features

BREAKING CHANGES

  • upgrade eslint peer dependency from 4.18.x to 5.x.

  • set parserOptions: { jsx: true }

  • add max-classes-per-file configured to error if there is more than one
  • add prefer-object-spread configured to warn when Object.assign is called using an object literal as the first argument

5.0.2 (2018-03-21)

Bug Fixes

5.0.1 (2018-03-15)

Bug Fixes

  • add "plugins" folder to published package (#13) (edc66c0)

5.0.0 (2018-03-14)

Features

BREAKING CHANGES

  • package location has moved to the npm registry under @zendeskgarden/eslint-config. See the README for installation/upgrade details.

4.1.0 (2018-02-21)

Features

  • upgrade to support eslint 4.18.x (#10) (b38d815)

4.0.0 - 2017-11-27

Changed (per #9)

  • Upgrade to support eslint 4.x.

Removed

  • The eslint-plugin-sort-class-members and rules for class member sorting.

3.0.1 - 2017-11-10

Fixed (per #7)

  • Update sort-class-members config to be compatible with newer eslint-plugin-sort-class-members packages.

3.0.0 - 2017-05-26

Changed (per #6)

  • Prepared package for registry publish as @zendesk/eslint-config-garden. See README for updated installation and usage.
  • Upgrade to support eslint 3.x.

2.1.0 - 2016-04-05

Added (per #3)

  • Rules for class member sorting.

Changed

  • Upgrade to support eslint 2.5.x.

2.0.1 - 2016-02-23

Fixed (per #5)

  • Update operator-linebreak rule to "after".

2.0.0 - 2016-02-22

Changed (per #4)

  • Upgrade to support eslint 2.2.x.

1.0.0 - 2016-01-04

Changed (per #2)

  • Upgrade to support eslint 1.10.x.

0.2.1 - 2015-09-05

Fixed

  • Allow short notation type conversions.

0.2.0 - 2015-08-31

Changed (per #1)

  • Require parentheses around arrow function arguments as-needed.

0.1.0 - 2015-08-21