- ESLint 9 compatibility.
- Upgraded all plugins.
- Add
noImplicitOverride
to TypeScript config (recommended by Matt Pocock). eslint-import-resolver-typescript
is now used for TypeScript files to configureeslint-plugin-import
correctly. This now correctly takes into considerationpaths
fromtsconfig.json
when determining ordering of imports.- New rules from
eslint-plugin-unicorn
:unicorn/prefer-array-index-of
unicorn/prefer-optional-catch-binding
unicorn/no-useless-spread
- New rules from
@typescript-eslint
:@typescript-eslint/prefer-optional-chain
@typescript-eslint/no-unnecessary-condition
- New rules from
eslint-plugin-import
:import/no-useless-path-segments
- Apply TypeScript-specific rules also to
.mts
,.mtsx
,.cts
and.ctsx
files. - Add
eslint-plugin-unused-imports
to remove unused imports during autofix. - Add vitest rules.
- ESLint 9 is now required (see updated README)
- The ESLint config is intended to be consumed via ESM (e.g. by using
eslint.config.mjs
) - Prettier no longer runs via an integrated rule since this is discouraged. Instead, a supplemental Prettier config is now provided (see updated README). To enable prettier checking on CI, you might want to consider adding
prettier --check
to your CI pipeline. - The
valid-jsdoc
rule has been removed since it was removed from ESLint core and is only available via an additional plugin. If you'd like to keep this rule, addeslint-plugin-jsdoc
to your project. - Globals for Cypress are no longer provided out of the box, but should be added explicitly by projects (see predefined global variables).
- Enable
react/function-component-definition
to have auto fix for using functions of React components (fixes #75) - Enable
react/no-unstable-nested-components
(fixes #77) - Enable
{checksVoidReturn: {attributes: false}}
for@typescript-eslint/no-misused-promises
(fixes #86) - Enable
@typescript-eslint/ban-ts-comment
(fixes #89) - Upgrade available major versions of dependencies (
@typescript-eslint/eslint-plugin
) - Add
molindo/tailwind
- Detect
**/*.{e2e,cy}.{js,jsx,ts,tsx}
as test files (fixes #67) - Change
import/no-extraneous-dependencies
rule configuration to allow dev dependencies in all files since it has too many false positives otherwise (fixes #71) - Add
cy
andCypress
globals whencypress
config is used (fixes #79) - Disable
no-use-before-define
for TypeScript files (fixes #91)
- Require
eslint@^8.45
eslint-config-molindo/setupPlugins
has been removed, since it's no longer necessary (fixes #59)- Removed
typescript
from dependencies (consumers should install this) - CSS modules-related rules were moved to
molindo/css-modules
- Upstream breaking changes
- Upgrade to TypeScript 4
- Disable TypeScript rules which cause false positives.
- Disallow
describe.only
.
- Requires ESLint 8
- Add
allowFunctions
toreact/jsx-no-bind
rule.
- Add
jest
config - Add
cypress
config - Add
no-useless-rename
- Add
spaced-comment
- Avoid errors in JavaScript files in TypeScript projects
- Disable
react/react-in-jsx-scope
- Compatibility with ESLint 7.23.0
- TypeScript support.
- Remove peer dependencies in favour of actual dependencies.
- Add automatic version detection for React.
- Allow more recent versions of dependencies.
- Warn about confusing browser globals when accessing them without
window
. - Sort desctructured keys when using the React config (useful for destructured props to match the prop type definition).
- Add useful rules from eslint-plugin-unicorn:
unicorn/explicit-length-check
,unicorn/import-index
,unicorn/no-abusive-eslint-disable
- Imports are alphabetized (within individual groups: dependencies, internal, local, etc.).
- Validate that array methods like
map
andfilter
return something. - Improve React component method sorting if you're using classes.
- Add
react/button-has-type
.
- Removed
no-lonely-if
since there are valid cases for this pattern. - Keep
trailingComma: 'none'
for newer prettier versions. - Keep auto fix behaviour of
react-hooks/exhaustive-deps
in more recent versions. - Replace
jsx-a11y/label-has-for
withjsx-a11y/label-has-associated-control
. - Allow for/of statements as there are valid use cases.
- The base JavaScript config
molindo
has been renamed tomolindo/javascript
. - The base JavaScript config is no longer included in the React config. Use
"extends": ["molindo/javascript", "molindo/react"]
to use both. - Require a minimum version of Node.js 10.
- Use
eslint@^7.0.0
. - A declaration style is now enforced for functions. Since there's no auto fix, it's probably the best option to override this rule in existing code bases which use a different style extensively.
- This config now installs the relevant plugins automatically. However you have to use the JavaScript version of the ESLint config (
.eslintrc.js
) and addrequire('eslint-config-molindo/setupPlugins')
there. Alternatively you can still install all necessary plugins yourself.