Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: about 2 months ago
JSON representation

An ESLint runner for Jest

Awesome Lists containing this project

README

        

[![Actions Status](https://github.com/jest-community/jest-runner-eslint/actions/workflows/nodejs.yml/badge.svg?branch=main)](https://github.com/jest-community/jest-runner-eslint/actions) [![npm version](https://badge.fury.io/js/jest-runner-eslint.svg)](https://badge.fury.io/js/jest-runner-eslint)







jest-runner-eslint


ESLint runner for Jest




## 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.

![fix](https://user-images.githubusercontent.com/574806/46181271-93205080-c279-11e8-8d73-b4c5e11086c4.gif)

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 file

In `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"]` |