127 lines
2.6 KiB
Markdown
127 lines
2.6 KiB
Markdown
---
|
|
id: eslint-plugin-query
|
|
title: ESLint Plugin Query
|
|
---
|
|
|
|
TanStack Query comes with its own ESLint plugin. This plugin is used to enforce best practices and to help you avoid common mistakes.
|
|
|
|
## Installation
|
|
|
|
The plugin is a separate package that you need to install:
|
|
|
|
```bash
|
|
npm i -D @tanstack/eslint-plugin-query
|
|
```
|
|
|
|
or
|
|
|
|
```bash
|
|
pnpm add -D @tanstack/eslint-plugin-query
|
|
```
|
|
|
|
or
|
|
|
|
```bash
|
|
yarn add -D @tanstack/eslint-plugin-query
|
|
```
|
|
|
|
or
|
|
|
|
```bash
|
|
bun add -D @tanstack/eslint-plugin-query
|
|
```
|
|
|
|
## Flat Config (`eslint.config.js`)
|
|
|
|
### Recommended setup
|
|
|
|
To enable all of the recommended rules for our plugin, add the following config:
|
|
|
|
```js
|
|
import pluginQuery from '@tanstack/eslint-plugin-query'
|
|
|
|
export default [
|
|
...pluginQuery.configs['flat/recommended'],
|
|
// Any other config...
|
|
]
|
|
```
|
|
|
|
### Recommended strict setup
|
|
|
|
The `flat/recommended-strict` config extends `flat/recommended` with additional opinionated rules that enforce best practices more aggressively.
|
|
|
|
```js
|
|
import pluginQuery from '@tanstack/eslint-plugin-query'
|
|
|
|
export default [
|
|
...pluginQuery.configs['flat/recommended-strict'],
|
|
// Any other config...
|
|
]
|
|
```
|
|
|
|
### Custom setup
|
|
|
|
Alternatively, you can load the plugin and configure only the rules you want to use:
|
|
|
|
```js
|
|
import pluginQuery from '@tanstack/eslint-plugin-query'
|
|
|
|
export default [
|
|
{
|
|
plugins: {
|
|
'@tanstack/query': pluginQuery,
|
|
},
|
|
rules: {
|
|
'@tanstack/query/exhaustive-deps': 'error',
|
|
},
|
|
},
|
|
// Any other config...
|
|
]
|
|
```
|
|
|
|
## Legacy Config (`.eslintrc`)
|
|
|
|
### Recommended setup
|
|
|
|
To enable all of the recommended rules for our plugin, add `plugin:@tanstack/query/recommended` in extends:
|
|
|
|
```json
|
|
{
|
|
"extends": ["plugin:@tanstack/query/recommended"]
|
|
}
|
|
```
|
|
|
|
### Recommended strict setup
|
|
|
|
The `recommendedStrict` config extends `recommended` with additional opinionated rules:
|
|
|
|
```json
|
|
{
|
|
"extends": ["plugin:@tanstack/query/recommendedStrict"]
|
|
}
|
|
```
|
|
|
|
### Custom setup
|
|
|
|
Alternatively, add `@tanstack/query` to the plugins section, and configure the rules you want to use:
|
|
|
|
```json
|
|
{
|
|
"plugins": ["@tanstack/query"],
|
|
"rules": {
|
|
"@tanstack/query/exhaustive-deps": "error"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Rules
|
|
|
|
- [@tanstack/query/exhaustive-deps](./exhaustive-deps.md)
|
|
- [@tanstack/query/no-rest-destructuring](./no-rest-destructuring.md)
|
|
- [@tanstack/query/stable-query-client](./stable-query-client.md)
|
|
- [@tanstack/query/no-unstable-deps](./no-unstable-deps.md)
|
|
- [@tanstack/query/infinite-query-property-order](./infinite-query-property-order.md)
|
|
- [@tanstack/query/no-void-query-fn](./no-void-query-fn.md)
|
|
- [@tanstack/query/mutation-property-order](./mutation-property-order.md)
|
|
- [@tanstack/query/prefer-query-options](./prefer-query-options.md)
|