eslint-config-jimmy-guzman
An opinionated ESLint configuration that targets typescript, javascript, react and jest and testing-library
Table of Contents
Usage
The current version of eslint-config-jimmy-guzman
is fully supported on LTS versions of node, and requires at least node v12.
Installation:
This requires the peer dependencies: eslint@^8.14.0
, typescript@^4.5.0
, and prettier@^2.4.0
.
To easily install everything you can leverage install-peerdeps
, i.e
for | how |
---|
yarn/npm | npx install-peerdeps --dev eslint-config-jimmy-guzman |
yarn workspaces | npx install-peerdeps eslint-config-jimmy-guzman --dev -yarn -x -W |
pnpm | pnpm dlx install-peerdeps eslint-config-jimmy-guzman --dev -pnpm |
Configuration
Add extends: 'jimmy-guzman'
to your .eslintrc
to get all the rules that enforce code style, enforce best practices and prevent errors.
This package also includes rules for jest
, typescript
and testing-library
that can be used such as:
rules | configuration | notes |
---|
base | extends: 'jimmy-guzman' | |
jest | extends: ['jimmy-guzman', 'jimmy-guzman/jest'] | |
typescript | extends: ['jimmy-guzman', 'jimmy-guzman/typescript'] | here |
react | extends: ['jimmy-guzman', 'jimmy-guzman/react'] | here |
testing-library | extends: ['jimmy-guzman', 'jimmy-guzman/react', 'jimmy-guzman/testing-library'] | here |
Monorepos
The following rules don't support some monorepo setups so you might need to turned them off:
rules:
import/no-extraneous-dependencies: off
Typescript
jimmy-guzman/typescript
ruleset requires type information that needs further configuration:
parserOptions:
project: ['./tsconfig.json']
You can read more about linting with type information here
React
jimmy-guzman/react
favors React 17's new jsx transform so a couple of rules are turned off by default. If you are not using the new jsx transform, it's recommended to add this configuration:
parserOptions:
ecmaFeatures:
jsx: true
pragma: React
rules:
react/react-in-jsx-scope: error
react/jsx-uses-react: error
Testing Library
jimmy-guzman/testing-library
makes an assumption that a suite of Testing Library packages are being used such as @testing-library/react, @testing-library/jest-dom and @testing-library/user-event.
Why
I wanted a one-stop shop for the ESLint rules across my projects to help keep up with ESLint upgrades across different plugins and to have consistency. Feel free to use this if it fits your needs. ❤️