Skip to content

Commit

Permalink
feat: add optional eslint-plugin-jest config (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
imccausl committed Feb 21, 2024
1 parent 39c6198 commit 32a4e55
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 4 deletions.
7 changes: 7 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
"eslint-import-resolver-node": "^0.3.9",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jest": "^27.9.0",
"eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react": "^7.33.2",
Expand Down Expand Up @@ -88,6 +89,9 @@
"@tanstack/eslint-plugin-query": {
"optional": true
},
"eslint-plugin-jest": {
"optional": true
},
"eslint-plugin-jsx-a11y": {
"optional": true
},
Expand All @@ -99,6 +103,9 @@
},
"eslint-plugin-testing-library": {
"optional": true
},
"eslint-plugin-vitest": {
"optional": true
}
}
}
22 changes: 19 additions & 3 deletions src/test/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import { doesModuleExist } from '../util'

import type { ESLint } from 'eslint'
import type { ESLint, Linter } from 'eslint'

const overrides: ESLint.ConfigData['overrides'] = []
const extensions: ESLint.ConfigData['extends'] = []
const plugins: ESLint.ConfigData['plugins'] = []

const doesJestPluginExist = doesModuleExist('eslint-plugin-jest')

if (doesModuleExist('eslint-plugin-testing-library')) {
extensions.push('plugin:testing-library/react')
}
Expand All @@ -15,15 +17,29 @@ if (doesModuleExist('eslint-plugin-vitest')) {
plugins.push('vitest')
}

if (doesJestPluginExist) {
extensions.push('plugin:jest/recommended')
extensions.push('plugin:jest/style')
plugins.push('jest')
}

if (extensions.length || plugins.length) {
overrides.push({
const testConfig: Linter.ConfigOverride = {
files: [
'**/__tests__/**/*.[jt]s?(x)',
'**/?(*.)+(spec|test).[jt]s?(x)',
],
extends: extensions,
plugins,
})
}

if (doesJestPluginExist) {
testConfig.env = {
jest: true,
}
}

overrides.push(testConfig)
}

const config: ESLint.ConfigData = {
Expand Down
25 changes: 24 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,7 @@ __metadata:
eslint-import-resolver-node: "npm:^0.3.9"
eslint-import-resolver-typescript: "npm:^3.6.1"
eslint-plugin-import: "npm:^2.29.1"
eslint-plugin-jest: "npm:^27.9.0"
eslint-plugin-jsx-a11y: "npm:^6.8.0"
eslint-plugin-prettier: "npm:^5.1.3"
eslint-plugin-react: "npm:^7.33.2"
Expand Down Expand Up @@ -408,6 +409,8 @@ __metadata:
peerDependenciesMeta:
"@tanstack/eslint-plugin-query":
optional: true
eslint-plugin-jest:
optional: true
eslint-plugin-jsx-a11y:
optional: true
eslint-plugin-react:
Expand All @@ -416,6 +419,8 @@ __metadata:
optional: true
eslint-plugin-testing-library:
optional: true
eslint-plugin-vitest:
optional: true
languageName: unknown
linkType: soft

Expand Down Expand Up @@ -1316,7 +1321,7 @@ __metadata:
languageName: node
linkType: hard

"@typescript-eslint/utils@npm:^5.58.0":
"@typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.58.0":
version: 5.62.0
resolution: "@typescript-eslint/utils@npm:5.62.0"
dependencies:
Expand Down Expand Up @@ -2905,6 +2910,24 @@ __metadata:
languageName: node
linkType: hard

"eslint-plugin-jest@npm:^27.9.0":
version: 27.9.0
resolution: "eslint-plugin-jest@npm:27.9.0"
dependencies:
"@typescript-eslint/utils": "npm:^5.10.0"
peerDependencies:
"@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 || ^7.0.0
eslint: ^7.0.0 || ^8.0.0
jest: "*"
peerDependenciesMeta:
"@typescript-eslint/eslint-plugin":
optional: true
jest:
optional: true
checksum: 10/bca54347280c06c56516faea76042134dd74355c2de6c23361ba0e8736ecc01c62b144eea7eda7570ea4f4ee511c583bb8dab00d7153a1bd1740eb77b0038fd4
languageName: node
linkType: hard

"eslint-plugin-jsx-a11y@npm:^6.8.0":
version: 6.8.0
resolution: "eslint-plugin-jsx-a11y@npm:6.8.0"
Expand Down

0 comments on commit 32a4e55

Please sign in to comment.