https://github.com/jest-community/jest-runner-eslint
An ESLint runner for Jest
https://github.com/jest-community/jest-runner-eslint
jest jest-runner-eslint watch-mode
Last synced: 9 days ago
JSON representation
An ESLint runner for Jest
- Host: GitHub
- URL: https://github.com/jest-community/jest-runner-eslint
- Owner: jest-community
- License: mit
- Created: 2017-09-08T03:27:53.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-03-03T16:14:31.000Z (about 2 months ago)
- Last Synced: 2025-04-03T17:53:46.765Z (17 days ago)
- Topics: jest, jest-runner-eslint, watch-mode
- Language: JavaScript
- Homepage:
- Size: 1.26 MB
- Stars: 480
- Watchers: 6
- Forks: 46
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-jest - jest-runner-eslint
README
[](https://github.com/jest-community/jest-runner-eslint/actions) [](https://badge.fury.io/js/jest-runner-eslint)
![]()
## Usage
### Install
Install `jest`_(it needs Jest 21+)_ and `jest-runner-eslint`
```bash
yarn add --dev jest jest-runner-eslint# or with NPM
npm install --save-dev jest jest-runner-eslint
```### Add it to your Jest config
#### Standalone
In your `package.json`
```json
{
"jest": {
"runner": "jest-runner-eslint",
"displayName": "lint",
"testMatch": ["/src/**/*.js"]
}
}
```Or in `jest.config.js`
```js
module.exports = {
runner: 'jest-runner-eslint',
displayName: 'lint',
testMatch: ['/src/**/*.js'],
};
```Please update `testMatch` to match your project folder structure
#### Alongside other runners
It is recommended to use the [`projects`](https://jestjs.io/docs/configuration#projects-arraystring--projectconfig) configuration option to run multiple Jest runners simultaneously.
If you are using Jest <22.0.5, you can use multiple Jest configuration files and supply the paths to those files in the `projects` option. For example:
```js
// jest-test.config.js
module.exports = {
// your Jest test options
displayName: 'test',
};// jest-eslint.config.js
module.exports = {
// your jest-runner-eslint options
runner: 'jest-runner-eslint',
displayName: 'lint',
testMatch: ['/src/**/*.js'],
};
```In your `package.json`:
```json
{
"jest": {
"projects": [
"/jest-test.config.js",
"/jest-eslint.config.js"
]
}
}
```Or in `jest.config.js`:
```js
module.exports = {
projects: [
'/jest-test.config.js',
'/jest-eslint.config.js',
],
};
```If you are using Jest >=22.0.5, you can supply an array of project configuration objects instead. In your `package.json`:
```json
{
"jest": {
"projects": [
{
"displayName": "test"
},
{
"runner": "jest-runner-eslint",
"displayName": "lint",
"testMatch": ["/src/**/*.js"]
}
]
}
}
```Or in `jest.config.js`:
```js
module.exports = {
projects: [
{
displayName: 'test',
},
{
runner: 'jest-runner-eslint',
displayName: 'lint',
testMatch: ['/src/**/*.js'],
},
],
};
```### Run Jest
```bash
yarn jest
```## Toggle `--fix` in watch mode
`jest-runner-eslint` comes with a watch plugin that allows you to toggle the `--fix` value while in watch mode without having to update your configuration.

To use this watch plugin simply add this to your Jest configuration.
```js
{
watchPlugins: ['jest-runner-eslint/watch-fix'],
}
```After this run Jest in watch mode and you will see the following line in your watch usage menu
```
› Press F to override ESLint --fix.
```## Options
This project uses [cosmiconfig](https://github.com/davidtheclark/cosmiconfig), so you can provide config via:
- a `jest-runner-eslint` property in your `package.json`
- a `jest-runner-eslint.config.js` JS file
- a `.jest-runner-eslintrc` JSON fileIn `package.json`
```json
{
"jest-runner-eslint": {
"cliOptions": {
// Options here
}
}
}
```or in `jest-runner-eslint.config.js`
```js
module.exports = {
cliOptions: {
// Options here
},
};
```### cliOptions
jest-runner-eslint maps a lot of ESLint CLI arguments to config options. For example `--fix` is `cliOptions.fix`
| option | default | example |
| ----------------------------- | -------------- | --------------------------------------------------------------------------------------------- |
| cache | `false` | `"cache": true` |
| cacheLocation | `.eslintcache` | `"cacheLocation": "/path/to/cache"` |
| config | `null` | `"config": "/path/to/config"` |
| env | `null` | `"env": "mocha"` or `"env": ["mocha", "other"]` |
| ext | `[".js"]` | `"ext": ".jsx"` or `"ext": [".jsx", ".ts"]` |
| fix | `false` | `"fix": true` |
| fixDryRun | `false` | `"fixDryRun": true` |
| format | `null` | `"format": "codeframe"` |
| global | `[]` | `"global": "it"` or `"global": ["it", "describe"]` |
| ignorePath | `null` | `"ignorePath": "/path/to/ignore"` |
| ignorePattern | `[]` | `"ignorePattern": ["/path/to/ignore/*"]` |
| maxWarnings | `-1` | `"maxWarnings": 0` |
| noEslintrc | `false` | `"noEslintrc": true` |
| noIgnore | `false` | `"noIgnore": true` |
| noInlineConfig | `false` | `"noInlineConfig": true` |
| parser | `espree` | `"parser": "flow"` |
| parserOptions | `{}` | `"parserOptions": { "myOption": true }` |
| plugin | `[]` | `"plugin": "prettier"` or `"plugin": ["prettier", "other"]` |
| quiet | `false` | `"quiet": true` |
| resolvePluginsRelativeTo | `undefined` | `"resolvePluginsRelativeTo": "./eslint-config"` |
| reportUnusedDisableDirectives | `false` | `"reportUnusedDisableDirectives": true` |
| rules | `{}` | `"rules": {"quotes": [2, "double"]}` or `"rules": {"quotes": [2, "double"], "no-console": 2}` |
| rulesdir | `[]` | `"rulesdir": "/path/to/rules/dir"` or `"rulesdir": ["/path/to/rules/dir", "/path/to/other"]` |