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-eslint
In 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 jest
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.
{
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-eslint
property in yourpackage.json
- a
jest-runner-eslint.config.js
JS file - a
.jest-runner-eslintrc
JSON 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"] |