Install jest(it needs Jest 21+) and jest-runner-eslint
yarn add --dev jest jest-runner-eslint # or with NPM npm install --save-dev jest jest-runner-eslintIn your package.json
{ "jest": { "runner": "jest-runner-eslint", "displayName": "lint", "testMatch": ["<rootDir>/src/**/*.js"] } }Or in jest.config.js
module.exports = { runner: 'jest-runner-eslint', displayName: 'lint', testMatch: ['<rootDir>/src/**/*.js'], };Please update testMatch to match your project folder structure
It is recommended to use the projects 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:
// 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: ['<rootDir>/src/**/*.js'], };In your package.json:
{ "jest": { "projects": [ "<rootDir>/jest-test.config.js", "<rootDir>/jest-eslint.config.js" ] } }Or in jest.config.js:
module.exports = { projects: [ '<rootDir>/jest-test.config.js', '<rootDir>/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:
{ "jest": { "projects": [ { "displayName": "test" }, { "runner": "jest-runner-eslint", "displayName": "lint", "testMatch": ["<rootDir>/src/**/*.js"] } ] } }Or in jest.config.js:
module.exports = { projects: [ { displayName: 'test', }, { runner: 'jest-runner-eslint', displayName: 'lint', testMatch: ['<rootDir>/src/**/*.js'], }, ], };yarn jestjest-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.
{ 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. This project uses cosmiconfig, so you can provide config via:
- a
jest-runner-eslintproperty in yourpackage.json - a
jest-runner-eslint.config.jsJS file - a
.jest-runner-eslintrcJSON file
In package.json
{ "jest-runner-eslint": { "cliOptions": { // Options here } } }or in jest-runner-eslint.config.js
module.exports = { cliOptions: { // Options here }, };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"] |

