eslint-config-un 1.0.0-alpha.33 → 1.0.0-alpha.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +223 -174
  2. package/dist/{angular-DnFTQdqp.js → angular-F9qCcdE6.js} +3 -4
  3. package/dist/{astro-BSgwgV-Q.js → astro-DPnrzOVN.js} +4 -5
  4. package/dist/{ava-67I2zuRu.js → ava-CihB8DYD.js} +2 -2
  5. package/dist/{better-tailwind-Bkh1vMsh.js → better-tailwind-PsrIXgUc.js} +2 -3
  6. package/dist/{case-police-CVQjHOLM.js → case-police-DBT8awLe.js} +2 -2
  7. package/dist/{cli-DEtqi6Qx.js → cli-CU4wgrRj.js} +1 -1
  8. package/dist/cloudfront-functions-B2o5fL8_.js +154 -0
  9. package/dist/{compat-CdMLgbTn.js → compat-BPnfGT48.js} +1 -1
  10. package/dist/{cspell-BZOOFXmH.js → cspell-pFfV93fu.js} +1 -1
  11. package/dist/{css-CZ5U0i4d.js → css-CKMDDy5s.js} +8 -4
  12. package/dist/{css-in-js-Be2lbwZ0.js → css-in-js-CyEZ34tK.js} +1 -1
  13. package/dist/{cypress-BLInl92c.js → cypress-CjP0WKWr.js} +2 -2
  14. package/dist/{de-morgan-DShHlhC_.js → de-morgan-CKBoTMpb.js} +1 -1
  15. package/dist/{depend-W4mOQR7m.js → depend-C-v-CYaG.js} +2 -2
  16. package/dist/{ember-q6d78erg.js → ember-Bl0U777e.js} +2 -2
  17. package/dist/{erasable-syntax-only-ssIYbcJp.js → erasable-syntax-only-Dt4-vhGT.js} +1 -1
  18. package/dist/{es-BS-n7Ulm.js → es-45sHkVBF.js} +3 -4
  19. package/dist/es-CEJeBVF9.js +4 -0
  20. package/dist/{eslint-DQBkZ85F.js → eslint-DU9unf8c.js} +170 -170
  21. package/dist/{eslint-comments-CFpcAiMc.js → eslint-comments-DMzcVQWQ.js} +1 -1
  22. package/dist/{eslint-plugin-CE0h9NsO.js → eslint-plugin-Bt8UbEtK.js} +2 -2
  23. package/dist/{file-progress-Cs6g8eds.js → file-progress-CEnCo_6b.js} +1 -1
  24. package/dist/{graphql-ULWtiCi7.js → graphql-DBBwghIJ.js} +1 -1
  25. package/dist/{header-CWQNOtaS.js → header-NIt1ougJ.js} +1 -1
  26. package/dist/{headers-BFts5D9t.js → headers-CUL17zcJ.js} +1 -1
  27. package/dist/html-BbaOxlKS.js +32 -0
  28. package/dist/{import-BfUrz6LT.js → import-CVP6YeuG.js} +1 -1
  29. package/dist/{import-zod-CEvf-S96.js → import-zod-CJfSrBUW.js} +1 -1
  30. package/dist/index.d.ts +3701 -1586
  31. package/dist/index.js +183 -157
  32. package/dist/{jest-xzczH8dF.js → jest-jtYAD-xv.js} +2 -2
  33. package/dist/{js-CDcqmhNC.js → js--SRE4zHf.js} +2 -2
  34. package/dist/{js-inline-BXn0ZfBD.js → js-inline-nyoBn81D.js} +1 -1
  35. package/dist/jsdoc-8JoK0OZb.js +38 -0
  36. package/dist/{json-schema-validator-BYrpc1LL.js → json-schema-validator-CQMfYKV3.js} +2 -2
  37. package/dist/{jsonc-DzZBje0R.js → jsonc-CnOutz13.js} +2 -2
  38. package/dist/{jsx-a11y-aHVD5-ue.js → jsx-a11y-DKjGy3y7.js} +2 -2
  39. package/dist/{lit-g7d2eKs8.js → lit-DuYwn3mg.js} +4 -5
  40. package/dist/markdown-links-CjFkT3bs.js +29 -0
  41. package/dist/{markdown-Dq0Hi2Rh.js → markdown-mt53Akfy.js} +21 -8
  42. package/dist/markdown-preferences-Bq_sYKqc.js +40 -0
  43. package/dist/{math-CBrIU5ol.js → math-XU9L2xy1.js} +1 -1
  44. package/dist/{mdx-BXa4OCtS.js → mdx-qOS4tys4.js} +2 -2
  45. package/dist/{mocha-Djz5YK2i.js → mocha-YyCysTsc.js} +2 -2
  46. package/dist/{nextjs-CYXq8TPr.js → nextjs-CKN-3aSa.js} +1 -1
  47. package/dist/{no-only-tests-C2goW3FS.js → no-only-tests-Cs5JBHdn.js} +2 -2
  48. package/dist/{no-stylistic-rules-DLFQRllY.js → no-stylistic-rules-pxEm51NX.js} +221 -51
  49. package/dist/{no-unsanitized-B4yWvSQZ.js → no-unsanitized-5-mvr9t1.js} +1 -1
  50. package/dist/{node-Ozn_sNTR.js → node-CmoUjkf9.js} +1 -1
  51. package/dist/{node-dependencies-79ozAC-J.js → node-dependencies-D327bBPP.js} +2 -2
  52. package/dist/{nx-AH8D3I7Q.js → nx-BjZgWizy.js} +1 -1
  53. package/dist/package-json-BDPup-gO.js +4 -0
  54. package/dist/{package-json-yEPmMVDB.js → package-json-BwLYvh-p.js} +2 -2
  55. package/dist/{perfectionist-dFtppyHZ.js → perfectionist-7D1yVEbI.js} +1 -1
  56. package/dist/{playwright-XmZ6ZmKw.js → playwright-B63MITGP.js} +2 -2
  57. package/dist/{plugin-un-wQrzLNzA.js → plugin-un-DvQbZcjO.js} +8 -9
  58. package/dist/{pnpm-CYKgwNaj.js → pnpm-B9MeteGw.js} +3 -4
  59. package/dist/{prefer-arrow-functions-Iew1I-rc.js → prefer-arrow-functions-XertZAOp.js} +1 -1
  60. package/dist/{promise-PTXJk6Nw.js → promise-BO3r6jkF.js} +1 -1
  61. package/dist/{qunit-ChWAIMHJ.js → qunit-DEhBUzcS.js} +2 -2
  62. package/dist/{qwik-8Umug5Rj.js → qwik-CtWR26TJ.js} +1 -1
  63. package/dist/{react-BXrh2H7o.js → react-BOA7brNH.js} +18 -22
  64. package/dist/{regexp-4dNbIXgN.js → regexp-C30Zi6a5.js} +1 -1
  65. package/dist/{rxjs-Zo313x8x.js → rxjs-CVysg8U6.js} +1 -1
  66. package/dist/{security-CMlTXy09.js → security-BMIEYBMC.js} +1 -1
  67. package/dist/{shared-dQgYTR3w.js → shared-BfrbDA8Y.js} +1 -1
  68. package/dist/{solid-C9Gsfush.js → solid-BwMs5eaV.js} +2 -3
  69. package/dist/{sonar-BBaYN45x.js → sonar-Bm2DxVM2.js} +2 -2
  70. package/dist/{storybook-prrfpYns.js → storybook-yK0-ByMh.js} +1 -1
  71. package/dist/{svelte-9DDgOgeu.js → svelte-CrqiaAkD.js} +3 -3
  72. package/dist/{tailwind-7fvLSG1h.js → tailwind-BMDrsHhX.js} +1 -1
  73. package/dist/{tanstack-query-Com60ZBs.js → tanstack-query-B97bNKC9.js} +1 -1
  74. package/dist/{testing-library-B5WpVxhE.js → testing-library-CRj7Vgqc.js} +3 -4
  75. package/dist/{toml-C0hPVmvw.js → toml-DCHHfyMy.js} +2 -2
  76. package/dist/{ts-BLLUo0PC.js → ts-CQr76DmP.js} +14 -9
  77. package/dist/{turbo-D_qGXuTt.js → turbo-BIjLCxmX.js} +1 -1
  78. package/dist/{un--1xmTs0I.js → un-ChTZuXYR.js} +1 -1
  79. package/dist/unicorn-RPPnNCYD.js +25 -0
  80. package/dist/{unnecessary-abstractions-DCP5Ix8k.js → unnecessary-abstractions-DLcQd0b1.js} +1 -1
  81. package/dist/{unocss-N7r8dn3u.js → unocss-ktKlZ2K1.js} +1 -1
  82. package/dist/{unused-imports-CxzDEbf3.js → unused-imports-DEOwHRMo.js} +2 -3
  83. package/dist/vitest-CM6y5t89.js +42 -0
  84. package/dist/{vue-eSShA_ZZ.js → vue-DEiN_gjl.js} +11 -11
  85. package/dist/{web-components-DRiCwPMp.js → web-components-Cw4XPg2i.js} +1 -1
  86. package/dist/{yaml-DeT71SOj.js → yaml-DsAUnhnh.js} +2 -2
  87. package/dist/{you-dont-need-lodash-underscore-BkQmP7Wf.js → you-dont-need-lodash-underscore-DYXgGTQ3.js} +1 -1
  88. package/package.json +126 -120
  89. package/dist/cloudfront-functions-DDwo3Ggr.js +0 -155
  90. package/dist/es-5NBzX6ko.js +0 -4
  91. package/dist/html-CoWgaUh_.js +0 -28
  92. package/dist/jsdoc-Dz-QdvqT.js +0 -36
  93. package/dist/package-json-BqReGsbO.js +0 -4
  94. package/dist/unicorn-C9l5U2kN.js +0 -25
  95. package/dist/vitest-NOa4e-ED.js +0 -41
package/README.md CHANGED
@@ -5,19 +5,19 @@ Grown out of the personal collection of rules, an ESLint config aspiring to cove
5
5
  ## Features
6
6
 
7
7
  - **Every major plugin** is included (50+ in total):
8
- [![JavaScript](./assets/devicon-javascript.svg) Vanilla JS rules](https://eslint.org/docs/latest/rules),
9
- [![TypeScript](./assets/devicon-typescript.svg) typescript-eslint](https://typescript-eslint.io/rules),
10
- [🦄unicorn](https://npmjs.com/eslint-plugin-unicorn),
11
- [⭐regexp](https://github.com/ota-meshi/eslint-plugin-regexp),
12
- [![NodeJS](./assets/devicon-nodejs.svg) node](https://github.com/eslint-community/eslint-plugin-n),
13
- [![VueJS](./assets/devicon-vuejs.svg) vue](https://eslint.vuejs.org),
14
- [![Angular](./assets/devicon-angular.svg) angular](https://github.com/angular-eslint/angular-eslint)
15
- [![ReactJS](./assets/devicon-react.svg) react](https://github.com/jsx-eslint/eslint-plugin-react) and 4 sister plugins,
16
- [![SolidJS](./assets/devicon-solidjs.svg) solid](https://github.com/solidjs-community/eslint-plugin-solid),
17
- [![tailwindcss](./assets/devicon-tailwindcss.svg) tailwind](https://github.com/francoismassart/eslint-plugin-tailwindcss),
18
- [![CSS](./assets/devicon-css3.svg) css](https://github.com/eslint/css),
19
- [![YAML](./assets/devicon-yaml.svg) yaml](https://github.com/ota-meshi/eslint-plugin-yml)
20
- and many more;
8
+ [![JavaScript](./assets/devicon-javascript.svg) Vanilla JS rules](https://eslint.org/docs/latest/rules),
9
+ [![TypeScript] typescript-eslint](https://typescript-eslint.io/rules),
10
+ [🦄unicorn](https://npmjs.com/eslint-plugin-unicorn),
11
+ [⭐regexp](https://github.com/ota-meshi/eslint-plugin-regexp),
12
+ [![NodeJS](./assets/devicon-nodejs.svg) node](https://github.com/eslint-community/eslint-plugin-n),
13
+ [![VueJS] vue](https://eslint.vuejs.org),
14
+ [![Angular] angular](https://github.com/angular-eslint/angular-eslint)
15
+ [![ReactJS] react](https://github.com/jsx-eslint/eslint-plugin-react) and 4 sister plugins,
16
+ [![SolidJS](./assets/devicon-solidjs.svg) solid](https://github.com/solidjs-community/eslint-plugin-solid),
17
+ [![tailwindcss][TailwindCSS] tailwind](https://github.com/francoismassart/eslint-plugin-tailwindcss),
18
+ [![CSS] css](https://github.com/eslint/css),
19
+ [![YAML](./assets/devicon-yaml.svg) yaml](https://github.com/ota-meshi/eslint-plugin-yml)
20
+ and many more;
21
21
  - **Every single rule** was evaluated and given a reasonable default severity and options;
22
22
  - **Extremely configurable:** you can easily override any rule's severity and **granularly** alter the default options;
23
23
  - **Zero configuration by default:** exporting `eslintConfig()` from `eslint.config.ts` is enough to get started;
@@ -31,10 +31,11 @@ and many more;
31
31
  ## Installation
32
32
 
33
33
  Minimum supported versions:
34
- - NodeJS: ^20.12 or >=21.7
34
+
35
+ - NodeJS: ^20.19 or ^22.16.0 or >=24
35
36
  - ESLint: ^9.15.0 (peer dependency)
36
37
 
37
- ```shell
38
+ ```sh
38
39
  npm i -D eslint-config-un eslint@latest
39
40
  pnpm i -D eslint-config-un eslint@latest
40
41
  yarn add -D eslint-config-un eslint@latest # Yarn Berry only (v2+)
@@ -49,9 +50,10 @@ Certain plugins (usually framework/library specific ones) are optional peer depe
49
50
 
50
51
  Yarn Classic (v1) does not support installing packages by npm name that have dependencies referenced by `file:` protocol - which we're using in this package. It fails with "Tarball is not in network and can not be located in cache" error. Installing directly from the tarball do work:
51
52
 
52
- ```shell
53
+ ```sh
53
54
  yarn add -D https://registry.npmjs.org/eslint-config-un/-/eslint-config-un-<VERSION>.tgz eslint@latest
54
55
  ```
56
+
55
57
  </details>
56
58
 
57
59
  <details>
@@ -87,7 +89,6 @@ yarn add -D https://registry.npmjs.org/eslint-config-un/-/eslint-config-un-<VERS
87
89
  | `prefer-arrow-functions` | `eslint-plugin-prefer-arrow-functions` |
88
90
  | `qunit` | `eslint-plugin-qunit` |
89
91
  | `qwik` | `eslint-plugin-qwik` |
90
- | `react-compiler` | `eslint-plugin-react-compiler` |
91
92
  | `react-hooks` | `eslint-plugin-react-hooks` |
92
93
  | `react-refresh` | `eslint-plugin-react-refresh` |
93
94
  | `react` | `eslint-plugin-react` |
@@ -102,6 +103,7 @@ yarn add -D https://registry.npmjs.org/eslint-config-un/-/eslint-config-un-<VERS
102
103
  | `vue` | `eslint-plugin-vue` |
103
104
  | `vue-scoped-css` | `eslint-plugin-vue-scoped-css` |
104
105
  | `vuejs-accessibility` | `eslint-plugin-vuejs-accessibility` |
106
+
105
107
  </details>
106
108
 
107
109
  ### Usage
@@ -116,7 +118,6 @@ export default eslintConfig({
116
118
  });
117
119
  ```
118
120
 
119
- <!-- eslint-disable-next-line markdown/no-missing-label-refs -->
120
121
  > [!NOTE]
121
122
  > We highly recommend using TypeScript config file, which is supported since ESLint v9.18.0, or [`@ts-check` directive](https://www.typescriptlang.org/docs/handbook/intro-to-js-ts.html#ts-check) at the start of the file otherwise.
122
123
 
@@ -163,11 +164,12 @@ type Severity = 0 | 1 | 2 | 'off' | 'warn' | 'error';
163
164
  - Sub-configs are the same as Configs, but configured within Config options. All Sub-configs use `configXXX` naming convention.
164
165
  - After evaluating all the flat configs, eslint-config-un will **load only those plugins that were actually used**, unless `loadPluginsOnDemand` option is set to `false`.
165
166
  - `files` is an array of file globs to which this Config will be applied. If you specify an empty array `[]`, the Config **will be disabled**, but not its Sub-configs.
166
- - `ignores` is exactly the same as ESLint's `ignores`. If you specify an empty array `[]`, the default ignore list won't be used.
167
+ - `ignores` is exactly the same as ESLint's `ignores`. If you specify an empty array `[]`, the default ignore list won't be used.
167
168
  - `overrides`/`overridesAny` is similar to ESLint's `rules`, but with a very important advantage: you can provide a function that will be called with the rule severity and options set by eslint-config-un, which allows you to **granularly override the options** or change the severity of each rule.
168
169
  - The only difference between `overrides` and `overridesAny` is that `overridesAny` will allow any rule to be overridden (from TypeScript's stand point; technically you can pass any rule to `overrides` too), while `overrides` will only allow those rules which are tied to the config.
169
170
  - `overridesAny` will be applied **after** `overrides`.
170
171
  - `forceSeverity` allows to bulk override the severity of all the rules not overridden via `overrides` or `overridesAny`.
172
+
171
173
  </details>
172
174
 
173
175
  <br>
@@ -176,154 +178,155 @@ Sub-config is a Config located within Config's options. If the parent config is
176
178
 
177
179
  ### Most popular and well known
178
180
 
179
- | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
180
- | -------------- | ------------------------------------------- | ------------------------------------ | ----------------- |
181
- | ![JavaScript](./assets/devicon-javascript.svg) `js` | ✅ | [Vanilla ESLint rules](https://eslint.org/docs/latest/rules) | - |
182
- | ![TypeScript](./assets/devicon-typescript.svg) `ts` | ✅ | [typescript-eslint](https://npmjs.com/typescript-eslint) (`ts`) | Only rules **not** requiring type information. |
183
- | ![TypeScript](./assets/devicon-typescript.svg) `ts/typeAware` | ✅ | ^ | Only rules requiring type information. |
184
- | ![TypeScript](./assets/devicon-typescript.svg) `ts/noTypeAssertion` | ✅ | [eslint-plugin-no-type-assertion](https://npmjs.com/eslint-plugin-no-type-assertion) (`no-type-assertion`) | - |
185
- | ![TypeScript](./assets/devicon-typescript.svg) `ts/sortTsconfigKeys` | ❌ | - | Sort type-level and `compilerOptions` keys in tsconfig files. |
186
- | 🦄 `unicorn` | ✅ | [eslint-plugin-unicorn](https://npmjs.com/eslint-plugin-unicorn) (`unicorn`) | - |
187
- | ⭐ `regexp` | ✅ | [eslint-plugin-regexp](https://npmjs.com/eslint-plugin-regexp) (`regexp`) | - |
188
- | `promise` | ✅ | [eslint-plugin-promise](https://npmjs.com/eslint-plugin-promise) (`promise`) | - |
189
- | `import` | ✅ | [eslint-plugin-import-x](https://npmjs.com/eslint-plugin-import-x) (`import`) | - |
190
- | `sonarjs` | ✅ | [eslint-plugin-sonarjs](https://npmjs.com/eslint-plugin-sonarjs) (`sonarjs`) | - |
191
- | `eslintComments` | ✅ | [@eslint-community/eslint-plugin-eslint-comments](https://npmjs.com/package/@eslint-community/eslint-plugin-eslint-comments) (`@eslint-community/eslint-comments`) | Since v0.1.3 |
192
- | `jsdoc` | ✅ | [eslint-plugin-jsdoc](https://npmjs.com/eslint-plugin-jsdoc) (`jsdoc`) | Since v0.3.1 |
193
- | `jsdoc/typescript` | ✅ (`ts` config is enabled) | - | Config for disabling or disabling certain rules for TypeScript files |
181
+ | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
182
+ | --------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------- |
183
+ | ![JavaScript](./assets/devicon-javascript.svg) `js` | ✅ | [Vanilla ESLint rules](https://eslint.org/docs/latest/rules) | - |
184
+ | ![TypeScript] `ts` | ✅ | [typescript-eslint](https://npmjs.com/typescript-eslint) (`ts`) | Only rules **not** requiring type information. |
185
+ | ![TypeScript] `ts/typeAware` | ✅ | ^ | Only rules requiring type information. |
186
+ | ![TypeScript] `ts/noTypeAssertion` | ✅ | [eslint-plugin-no-type-assertion](https://npmjs.com/eslint-plugin-no-type-assertion) (`no-type-assertion`) | - |
187
+ | ![TypeScript] `ts/sortTsconfigKeys` | ❌ | - | Sort type-level and `compilerOptions` keys in tsconfig files. |
188
+ | 🦄 `unicorn` | ✅ | [eslint-plugin-unicorn](https://npmjs.com/eslint-plugin-unicorn) (`unicorn`) | - |
189
+ | ⭐ `regexp` | ✅ | [eslint-plugin-regexp](https://npmjs.com/eslint-plugin-regexp) (`regexp`) | - |
190
+ | `promise` | ✅ | [eslint-plugin-promise](https://npmjs.com/eslint-plugin-promise) (`promise`) | - |
191
+ | `import` | ✅ | [eslint-plugin-import-x](https://npmjs.com/eslint-plugin-import-x) (`import`) | - |
192
+ | `sonarjs` | ✅ | [eslint-plugin-sonarjs](https://npmjs.com/eslint-plugin-sonarjs) (`sonarjs`) | - |
193
+ | `eslintComments` | ✅ | [@eslint-community/eslint-plugin-eslint-comments](https://npmjs.com/package/@eslint-community/eslint-plugin-eslint-comments) (`@eslint-community/eslint-comments`) | Since v0.1.3 |
194
+ | `jsdoc` | ✅ | [eslint-plugin-jsdoc](https://npmjs.com/eslint-plugin-jsdoc) (`jsdoc`) | Since v0.3.1 |
195
+ | `jsdoc/typescript` | ✅ (`ts` config is enabled) | - | Config for disabling or disabling certain rules for TypeScript files |
194
196
 
195
197
  ### Web frameworks & related
196
198
 
197
- | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
198
- | -------------- | ------------------------------------------- | ------------------------------------ | ----------------- |
199
- | ![VueJS](./assets/devicon-vuejs.svg) `vue` | ✅ (`vue` is installed) | [eslint-plugin-vue](https://npmjs.com/eslint-plugin-vue) (`vue`) | - |
200
- | ![VueJS](./assets/devicon-vuejs.svg) `vue/a11y` | ✅ | [eslint-plugin-vuejs-accessibility](https://npmjs.com/eslint-plugin-vuejs-accessibility) (`vuejs-accessibility`) | - |
201
- | ![Pinia](./assets/logos-pinia.svg) `vue/pinia` | ✅ | [eslint-plugin-pinia](https://npmjs.com/eslint-plugin-pinia) (`pinia`) | - |
202
- | ![Angular](./assets/devicon-angular.svg) `angular` | ✅ (`@angular/core` is installed) | [@angular-eslint/eslint-plugin](https://npmjs.com/package/@angular-eslint/eslint-plugin) (`@angular-eslint`) | Since v0.78.0 |
203
- | ![Angular](./assets/devicon-angular.svg) `angular/template` | ✅ | [@angular-eslint/eslint-plugin/template](https://npmjs.com/package/@angular-eslint/eslint-plugin/template) (`@angular-eslint/template`) | - |
204
- | ![ReactJS](./assets/devicon-react.svg) `react` | ✅ (`react` is installed) | [eslint-plugin-react](https://npmjs.com/eslint-plugin-react) (`react`) | Since v0.8.0 |
205
- | ![ReactJS](./assets/devicon-react.svg) `react/reactX` | ✅ | [@eslint-react/eslint-plugin](https://npmjs.com/package/@eslint-react/eslint-plugin) (`@eslint-react`) | - |
206
- | ![ReactJS](./assets/devicon-react.svg) `react/hooks` | ✅ | [eslint-plugin-react-hooks](https://npmjs.com/eslint-plugin-react-hooks) (`react-hooks`)<br>[@eslint-react/eslint-plugin](https://npmjs.com/package/@eslint-react/eslint-plugin) (`@eslint-react`) | Includes rules with `@eslint-react/hooks-extra` prefix from `@eslint-react/eslint-plugin` |
207
- | ![ReactJS](./assets/devicon-react.svg) `react/dom` | ✅ (`react-dom` is installed) | [@eslint-react/eslint-plugin](https://npmjs.com/package/@eslint-react/eslint-plugin) (`@eslint-react`)<br>[eslint-plugin-react](https://npmjs.com/eslint-plugin-react) | Includes rules with `@eslint-react/dom` prefix from `@eslint-react/eslint-plugin` and DOM related rules from `eslint-plugin-react` |
208
- | ![ReactJS](./assets/devicon-react.svg) `react/refresh` | ✅ | [eslint-plugin-react-refresh](https://npmjs.com/eslint-plugin-react-refresh) (`react-refresh`) | - |
209
- | ![ReactJS](./assets/devicon-react.svg) `react/compiler` | ✅ (if React version is at least 19) | [eslint-plugin-react-compiler](https://npmjs.com/eslint-plugin-react-compiler) (`react-compiler`) | - |
210
- | ![ReactJS](./assets/devicon-react.svg) `react/youMightNotNeedAnEffect` | ✅ | [eslint-plugin-react-you-might-not-need-an-effect](https://npmjs.com/eslint-plugin-react-you-might-not-need-an-effect) (`react-you-might-not-need-an-effect`) | Since v1.0.0 |
211
- | ![ReactJS](./assets/devicon-react.svg) `react/allowDefaultExportsInJsxFiles` | ✅ | - | Config that allows default exports in all JSX files |
212
- | ![NextJS](./assets/devicon-nextjs.svg) `nextJs` | ✅ (`next` is installed) | [@next/eslint-plugin-next](https://npmjs.com/package/@next/eslint-plugin-next) (`@next/next`) | Since v0.9.0 |
213
- | ![SolidJS](./assets/devicon-solidjs.svg) `solid` | ✅ (`solid-js` is installed) | [eslint-plugin-solid](https://npmjs.com/eslint-plugin-solid) (`solid`) | Since v0.10.0 |
214
- | ![SolidJS](./assets/devicon-qwik.svg) `qwik` | ✅ (`@builder.io/qwik` or `@qwik.dev/core` is installed) | [eslint-plugin-qwik](https://npmjs.com/eslint-plugin-qwik) (`qwik`) | Since v0.6.0 |
215
- | ![Astro](./assets/devicon-astro.svg) `astro` | ✅ (`astro` is installed) | [eslint-plugin-astro](https://npmjs.com/eslint-plugin-astro) (`astro`) | Since v0.9.0<br>Without A11Y rules |
216
- | ![Astro](./assets/devicon-astro.svg) `astro/jsxA11y` | ✅ | ^ | Only A11Y rules from `eslint-plugin-astro` |
217
- | ![Svelte](./assets/devicon-svelte.svg) `svelte` | ✅ (`svelte` is installed) | [eslint-plugin-svelte](https://npmjs.com/eslint-plugin-svelte) (`svelte`) | Since v0.10.0 |
218
- | ![Ember](./assets/devicon-ember.svg) `ember` | ✅ (`ember-source` is installed) | [eslint-plugin-ember](https://npmjs.com/eslint-plugin-ember) (`ember`) | Since v1.0.0 |
219
- | ![Ember](./assets/devicon-ember.svg) `ember/testFiles` | ✅ | ^ | Since v1.0.0 |
220
- | ![Ember](./assets/devicon-ember.svg) `ember/testFiles/noOnlyTests` | ✅ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
221
- | ![Lit](./assets/logos-lit-icon.svg) `lit` | ✅ (`lit` is installed) | [eslint-plugin-lit](https://npmjs.com/eslint-plugin-lit) (`lit`) | Since v1.0.0 |
222
- | ![Lit](./assets/logos-lit-icon.svg) `lit/a11y` | ✅ | [eslint-plugin-lit-a11y](https://npmjs.com/eslint-plugin-lit-a11y) (`lit-a11y`) | Since v1.0.0 |
223
- | ![TailwindCSS](./assets/devicon-tailwindcss.svg) `betterTailwind` | ✅ (`tailwindcss` is installed) | [eslint-plugin-better-tailwindcss](https://npmjs.com/eslint-plugin-better-tailwindcss) (`better-tailwindcss`) | Since v1.0.0<br>Supports v4 and v3 |
224
- | ![TailwindCSS](./assets/devicon-tailwindcss.svg) `tailwind` | ❌ | [eslint-plugin-tailwindcss](https://npmjs.com/eslint-plugin-tailwindcss) (`tailwindcss`) | Only supports v3 |
199
+ | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
200
+ | ---------------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
201
+ | ![VueJS] `vue` | ✅ (`vue` is installed) | [eslint-plugin-vue](https://npmjs.com/eslint-plugin-vue) (`vue`) | - |
202
+ | ![VueJS] `vue/a11y` | ✅ | [eslint-plugin-vuejs-accessibility](https://npmjs.com/eslint-plugin-vuejs-accessibility) (`vuejs-accessibility`) | - |
203
+ | ![Pinia](./assets/logos-pinia.svg) `vue/pinia` | ✅ (`pinia` is installed) | [eslint-plugin-pinia](https://npmjs.com/eslint-plugin-pinia) (`pinia`) | - |
204
+ | ![Angular] `angular` | ✅ (`@angular/core` is installed) | [@angular-eslint/eslint-plugin](https://npmjs.com/package/@angular-eslint/eslint-plugin) (`@angular-eslint`) | Since v0.78.0 |
205
+ | ![Angular] `angular/template` | ✅ | [@angular-eslint/eslint-plugin/template](https://npmjs.com/package/@angular-eslint/eslint-plugin-template) (`@angular-eslint/template`) | - |
206
+ | ![ReactJS] `react` | ✅ (`react` is installed) | [eslint-plugin-react](https://npmjs.com/eslint-plugin-react) (`react`) | Since v0.8.0 |
207
+ | ![ReactJS] `react/reactX` | ✅ | [@eslint-react/eslint-plugin] (`@eslint-react`) | - |
208
+ | ![ReactJS] `react/hooks` | ✅ | [eslint-plugin-react-hooks](https://npmjs.com/eslint-plugin-react-hooks) (`react-hooks`)<br>[@eslint-react/eslint-plugin] (`@eslint-react`) | Includes rules with `@eslint-react/hooks-extra` prefix from `@eslint-react/eslint-plugin` |
209
+ | ![ReactJS] `react/dom` | ✅ (`react-dom` is installed) | [@eslint-react/eslint-plugin] (`@eslint-react`)<br>[eslint-plugin-react](https://npmjs.com/eslint-plugin-react) | Includes rules with `@eslint-react/dom` prefix from `@eslint-react/eslint-plugin` and DOM related rules from `eslint-plugin-react` |
210
+ | ![ReactJS] `react/refresh` | ✅ | [eslint-plugin-react-refresh](https://npmjs.com/eslint-plugin-react-refresh) (`react-refresh`) | - |
211
+ | ![ReactJS] `react/youMightNotNeedAnEffect` | ✅ | [eslint-plugin-react-you-might-not-need-an-effect](https://npmjs.com/eslint-plugin-react-you-might-not-need-an-effect) (`react-you-might-not-need-an-effect`) | Since v1.0.0 |
212
+ | ![ReactJS] `react/allowDefaultExportsInJsxFiles` | ✅ | - | Config that allows default exports in all JSX files |
213
+ | ![NextJS](./assets/devicon-nextjs.svg) `nextJs` | ✅ (`next` is installed) | [@next/eslint-plugin-next](https://npmjs.com/package/@next/eslint-plugin-next) (`@next/next`) | Since v0.9.0 |
214
+ | ![SolidJS](./assets/devicon-solidjs.svg) `solid` | ✅ (`solid-js` is installed) | [eslint-plugin-solid](https://npmjs.com/eslint-plugin-solid) (`solid`) | Since v0.10.0 |
215
+ | ![SolidJS](./assets/devicon-qwik.svg) `qwik` | ✅ (`@builder.io/qwik` or `@qwik.dev/core` is installed) | [eslint-plugin-qwik](https://npmjs.com/eslint-plugin-qwik) (`qwik`) | Since v0.6.0 |
216
+ | ![Astro](./assets/devicon-astro.svg) `astro` | ✅ (`astro` is installed) | [eslint-plugin-astro](https://npmjs.com/eslint-plugin-astro) (`astro`) | Since v0.9.0<br>Without A11Y rules |
217
+ | ![Astro](./assets/devicon-astro.svg) `astro/jsxA11y` | ✅ | ^ | Only A11Y rules from `eslint-plugin-astro` |
218
+ | ![Svelte](./assets/devicon-svelte.svg) `svelte` | ✅ (`svelte` is installed) | [eslint-plugin-svelte](https://npmjs.com/eslint-plugin-svelte) (`svelte`) | Since v0.10.0 |
219
+ | ![Ember] `ember` | ✅ (`ember-source` is installed) | [eslint-plugin-ember](https://npmjs.com/eslint-plugin-ember) (`ember`) | Since v1.0.0 |
220
+ | ![Ember] `ember/testFiles` | ✅ | ^ | Since v1.0.0 |
221
+ | ![Ember] `ember/testFiles/noOnlyTests` | ✅ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
222
+ | ![Lit](./assets/logos-lit-icon.svg) `lit` | ✅ (`lit` is installed) | [eslint-plugin-lit](https://npmjs.com/eslint-plugin-lit) (`lit`) | Since v1.0.0 |
223
+ | ![Lit](./assets/logos-lit-icon.svg) `lit/a11y` | ✅ | [eslint-plugin-lit-a11y](https://npmjs.com/eslint-plugin-lit-a11y) (`lit-a11y`) | Since v1.0.0 |
224
+ | ![TailwindCSS] `betterTailwind` | ✅ (`tailwindcss` is installed) | [eslint-plugin-better-tailwindcss](https://npmjs.com/eslint-plugin-better-tailwindcss) (`better-tailwindcss`) | Since v1.0.0<br>Supports v4 and v3 |
225
+ | ![TailwindCSS] `tailwind` | | [eslint-plugin-tailwindcss](https://npmjs.com/eslint-plugin-tailwindcss) (`tailwindcss`) | Only supports v3 |
225
226
 
226
227
  ### Runtimes & related
227
228
 
228
- | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
229
- | -------------- | ------------------------------------------- | ------------------------------------ | ----------------- |
230
- | ![NodeJS](./assets/devicon-nodejs.svg) `node` | ✅ | [eslint-plugin-n](https://npmjs.com/eslint-plugin-n) (`node`) | - |
231
- | ![npm](./assets/devicon-npm.svg) `packageJson` | ❌ | [eslint-plugin-package-json](https://npmjs.com/eslint-plugin-package-json) (`package-json`) | Since v0.1.5 |
232
- | ![npm](./assets/devicon-npm.svg) `nodeDependencies` | ❌ | [eslint-plugin-node-dependencies](https://npmjs.com/eslint-plugin-node-dependencies) (`node-dependencies`) | Since v0.10.0 |
233
- | ![npm](./assets/devicon-npm.svg) `depend` | ❌ | [eslint-plugin-depend](https://npmjs.com/eslint-plugin-depend) (`depend`) | Since v1.0.0 |
234
- | ![pnpm](./assets/devicon-pnpm.svg) `pnpm` | ✅ (pnpm is detected as a package manager) | [eslint-plugin-pnpm](https://npmjs.com/eslint-plugin-pnpm) (`pnpm`) | Since v0.8.0<br>Does nothing, split into sub-configs |
235
- | ![pnpm](./assets/devicon-pnpm.svg) `pnpm/packageJson` | ✅ | ^ | Plugin rules related to `package.json` files |
236
- | ![pnpm](./assets/devicon-pnpm.svg) `pnpm/pnpmWorkspace` | ✅ | ^ | Plugin rules related to `pnpm-workspace.yaml` file |
237
- | ![AWS](./assets/devicon-amazonwebservices-wordmark.svg) `cloudfrontFunctions` | ❌ | - | Since v0.10.0<br>For linting [Amazon CloudFront Functions](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-functions.html) written for JavaScript Runtime v2 |
238
- | ![AWS](./assets/devicon-amazonwebservices-wordmark.svg) `cloudfrontFunctions/V1` | ❌ | - | Same, but for JavaScript Runtime v1 functions |
229
+ | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
230
+ | -------------------------------------------------------------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
231
+ | ![NodeJS](./assets/devicon-nodejs.svg) `node` | ✅ | [eslint-plugin-n](https://npmjs.com/eslint-plugin-n) (`node`) | - |
232
+ | ![npm] `packageJson` | ❌ | [eslint-plugin-package-json](https://npmjs.com/eslint-plugin-package-json) (`package-json`) | Since v0.1.5 |
233
+ | ![npm] `nodeDependencies` | ❌ | [eslint-plugin-node-dependencies](https://npmjs.com/eslint-plugin-node-dependencies) (`node-dependencies`) | Since v0.10.0 |
234
+ | ![npm] `depend` | ❌ | [eslint-plugin-depend](https://npmjs.com/eslint-plugin-depend) (`depend`) | Since v1.0.0 |
235
+ | ![pnpm] `pnpm` | ✅ (pnpm is detected as a package manager) | [eslint-plugin-pnpm](https://npmjs.com/eslint-plugin-pnpm) (`pnpm`) | Since v0.8.0<br>Does nothing, split into sub-configs |
236
+ | ![pnpm] `pnpm/packageJson` | ✅ | ^ | Plugin rules related to `package.json` files |
237
+ | ![pnpm] `pnpm/pnpmWorkspace` | ✅ | ^ | Plugin rules related to `pnpm-workspace.yaml` file |
238
+ | ![AWS](./assets/devicon-amazonwebservices-wordmark.svg) `cloudfrontFunctions` | ❌ | - | Since v0.10.0<br>For linting [Amazon CloudFront Functions](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-functions.html) written for JavaScript Runtime v2 |
239
+ | ![AWS](./assets/devicon-amazonwebservices-wordmark.svg) `cloudfrontFunctions/V1` | ❌ | - | Same, but for JavaScript Runtime v1 functions |
239
240
 
240
241
  ### Languages
241
242
 
242
- | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
243
- | -------------- | ------------------------------------------- | ------------------------------------ | ----------------- |
244
- | ![Markdown](./assets/mdi-language-markdown.svg) `markdown` | ✅ | [@eslint/markdown](https://npmjs.com/package/@eslint/markdown) (`markdown`) | Since v0.7.0<br>Configured to also lint fenced code blocks inside .md files |
245
- | ![Markdown](./assets/mdi-language-markdown.svg) `markdown/formatFencedCodeBlocks` | ✅ (`prettier` is installed) | [eslint-plugin-prettier](https://npmjs.com/eslint-plugin-prettier) (`prettier`) | Since v1.0.0<br>Format fenced code blocks inside Markdown files using Prettier |
246
- | ![MDX](./assets/vscode-icons-file-type-mdx.svg) `mdx` | ✅ | [eslint-plugin-mdx](https://npmjs.com/eslint-plugin-mdx) (`mdx`) | Since v1.0.0<br>Configured to also lint fenced code blocks inside .mdx files |
247
- | ![CSS](./assets/devicon-css3.svg) `css` | ✅ (unless `stylelint` is installed) | [@eslint/css](https://npmjs.com/package/@eslint/css) (`css`) | Since v0.7.0 |
248
- | ![CSS](./assets/devicon-css3.svg) `cssInJs` | ✅ | [eslint-plugin-css](https://npmjs.com/eslint-plugin-css) (`css-in-js`) | Since v0.2.0<br>Lints inlined CSS |
249
- | `jsxA11y` | ✅ | [eslint-plugin-jsx-a11y](https://npmjs.com/eslint-plugin-jsx-a11y) (`jsx-a11y`) | Since v0.8.0 |
250
- | ![YAML](./assets/devicon-yaml.svg) `yaml` | | [eslint-plugin-yaml](https://npmjs.com/eslint-plugin-yaml) (`yaml`) | Since v0.1.0 |
251
- | ![JSON](./assets/devicon-json.svg) `jsonc` | | [eslint-plugin-jsonc](https://npmjs.com/eslint-plugin-jsonc) (`jsonc`) | Since v0.1.4<br>Supports JSON, JSON5, JSONC |
252
- | `jsonc/json` | ❌ | ^ | Config exclusively for `.json` files, does nothing by default |
253
- | `jsonc/jsonc` | ❌ | ^ | Config exclusively for `.jsonc` files, does nothing by default |
254
- | `jsonc/json5` | ❌ | ^ | Config exclusively for `.json5` files, does nothing by default |
255
- | `jsonSchemaValidator` | ❌ | [eslint-plugin-json-schema-validator](https://npmjs.com/eslint-plugin-json-schema-validator) (`json-schema-validator`) | Since v0.6.0 |
256
- | ![TOML](./assets/tabler-toml.svg) `toml` | ❌ | [eslint-plugin-toml](https://npmjs.com/eslint-plugin-toml) (`toml`) | Since v0.1.3 |
257
- | ![HTML](./assets/devicon-html5.svg) `html` | | [@html-eslint/eslint-plugin](https://npmjs.com/package/@html-eslint/eslint-plugin) (`@html-eslint`) | Since v0.10.0 |
258
- | ![GraphQL](./assets/logos-graphql.svg) `graphql` | ✅ (`graphql` is installed) | [@graphql-eslint/eslint-plugin](https://npmjs.com/package/@graphql-eslint/eslint-plugin) (`graphql`) | Since v1.0.0 |
259
-
260
- ### JS/TS - Miscellaneous
261
-
262
- | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
263
- | -------------- | ------------------------------------------- | ------------------------------------ | ----------------- |
264
- | `security` | | [eslint-plugin-security](https://npmjs.com/eslint-plugin-security) (`security`) | - |
265
- | `unusedImports` | | [eslint-plugin-unused-imports](https://npmjs.com/eslint-plugin-unused-imports) (`unused-imports`) | Since v0.7.0 |
266
- | `unusedImports/noUnusedVars` | ❌ | ^ | Disables [`no-unused-vars`](https://eslint.org/docs/latest/rules/no-unused-vars), [`ts/no-unused-vars`](https://typescript-eslint.io/rules/no-unused-vars) and [`sonarjs/no-unused-vars`](https://sonarsource.github.io/rspec/#/rspec/S1481/javascript) rules in favor of `unused-imports/no-unused-vars` |
267
- | `prefer-arrow-functions` | ❌ | [eslint-plugin-prefer-arrow-functions](https://npmjs.com/eslint-plugin-prefer-arrow-functions) (`prefer-arrow-functions`) | Since v0.1.0 |
268
- | `perfectionist` | ❌ | [eslint-plugin-perfectionist](https://npmjs.com/eslint-plugin-perfectionist) (`perfectionist`) | Since v0.4.0<br>Supports sub-configs for each rule from the plugin since v1.0.0 |
269
- | `de-morgan` | ❌ | [eslint-plugin-de-morgan](https://npmjs.com/eslint-plugin-de-morgan) (`de-morgan`) | Since v0.5.0 |
270
- | `es` | ❌ | [eslint-plugin-es-x](https://npmjs.com/eslint-plugin-es-x) (`es-x`) | Since v0.10.0 |
271
- | `jsInline` | | [eslint-plugin-html](https://npmjs.com/eslint-plugin-html) (`html`) | Since v0.10.0<br>For linting inlined JS in HTML files |
272
- | `math` | | [eslint-plugin-math](https://npmjs.com/eslint-plugin-math) (`math`) | Since v1.0.0 |
273
- | `erasableSyntaxOnly` | | [eslint-plugin-erasable-syntax-only](https://npmjs.com/eslint-plugin-erasable-syntax-only) (`erasable-syntax-only`) | Since v1.0.0 |
274
- | `noUnnecessaryAbstractions` | ✅ | [eslint-plugin-unnecessary-abstractions](https://npmjs.com/eslint-plugin-unnecessary-abstractions) (`unnecessary-abstractions`) | Since v1.0.0 |
243
+ | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
244
+ | ----------------------------------------------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
245
+ | ![Markdown] `markdown` | ✅ | [@eslint/markdown](https://npmjs.com/package/@eslint/markdown) (`markdown`) | Since v0.7.0<br>Configured to also lint fenced code blocks inside .md files |
246
+ | ![Markdown] `markdown/formatFencedCodeBlocks` | ✅ (`prettier` is installed) | [eslint-plugin-prettier](https://npmjs.com/eslint-plugin-prettier) (`prettier`) | Since v1.0.0<br>Format fenced code blocks inside Markdown files using Prettier |
247
+ | ![Markdown] `markdown-preferences` | ✅ | [eslint-plugin-markdown-preferences](https://npmjs.com/package/eslint-plugin-markdown-preferences) (`markdownPreferences`) | Since v1.0.0 |
248
+ | ![Markdown] `markdown-links` | ✅ | [eslint-plugin-markdown-links](https://npmjs.com/package/eslint-plugin-markdown-links) (`markdownLinks`) | Since v1.0.0 |
249
+ | ![MDX](./assets/vscode-icons-file-type-mdx.svg) `mdx` | ✅ | [eslint-plugin-mdx](https://npmjs.com/eslint-plugin-mdx) (`mdx`) | Since v1.0.0<br>Configured to also lint fenced code blocks inside .mdx files |
250
+ | ![CSS] `css` | ✅ (unless `stylelint` is installed) | [@eslint/css](https://npmjs.com/package/@eslint/css) (`css`) | Since v0.7.0 |
251
+ | ![CSS] `cssInJs` | | [eslint-plugin-css](https://npmjs.com/eslint-plugin-css) (`css-in-js`) | Since v0.2.0<br>Lints inlined CSS |
252
+ | `jsxA11y` | | [eslint-plugin-jsx-a11y-x](https://npmjs.com/eslint-plugin-jsx-a11y-x) (`jsx-a11y`) | Since v1.0.0<br>Since v0.8.0 and until v1.0.0, [eslint-plugin-jsx-a11y](https://npmjs.com/eslint-plugin-jsx-a11y) was used |
253
+ | ![YAML](./assets/devicon-yaml.svg) `yaml` | ❌ | [eslint-plugin-yaml](https://npmjs.com/eslint-plugin-yaml) (`yaml`) | Since v0.1.0 |
254
+ | ![JSON](./assets/devicon-json.svg) `jsonc` | ❌ | [eslint-plugin-jsonc](https://npmjs.com/eslint-plugin-jsonc) (`jsonc`) | Since v0.1.4<br>Supports JSON, JSON5, JSONC |
255
+ | `jsonc/json` | ❌ | ^ | Config exclusively for `.json` files, does nothing by default |
256
+ | `jsonc/jsonc` | ❌ | ^ | Config exclusively for `.jsonc` files, does nothing by default |
257
+ | `jsonc/json5` | ❌ | ^ | Config exclusively for `.json5` files, does nothing by default |
258
+ | `jsonSchemaValidator` | | [eslint-plugin-json-schema-validator](https://npmjs.com/eslint-plugin-json-schema-validator) (`json-schema-validator`) | Since v0.6.0 |
259
+ | ![TOML](./assets/tabler-toml.svg) `toml` | | [eslint-plugin-toml](https://npmjs.com/eslint-plugin-toml) (`toml`) | Since v0.1.3 |
260
+ | ![HTML](./assets/devicon-html5.svg) `html` | ✅ | [@html-eslint/eslint-plugin](https://npmjs.com/package/@html-eslint/eslint-plugin) (`@html-eslint`) | Since v0.10.0 |
261
+ | ![GraphQL](./assets/logos-graphql.svg) `graphql` | ✅ (`graphql` is installed) | [@graphql-eslint/eslint-plugin](https://npmjs.com/package/@graphql-eslint/eslint-plugin) (`graphql`) | Since v1.0.0 |
262
+
263
+ ### Js/ts - miscellaneous
264
+
265
+ | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
266
+ | ---------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
267
+ | `security` | ❌ | [eslint-plugin-security](https://npmjs.com/eslint-plugin-security) (`security`) | - |
268
+ | `unusedImports` | ❌ | [eslint-plugin-unused-imports](https://npmjs.com/eslint-plugin-unused-imports) (`unused-imports`) | Since v0.7.0 |
269
+ | `unusedImports/noUnusedVars` | ❌ | ^ | Disables [`no-unused-vars`](https://eslint.org/docs/latest/rules/no-unused-vars), [`ts/no-unused-vars`](https://typescript-eslint.io/rules/no-unused-vars) and [`sonarjs/no-unused-vars`](https://sonarsource.github.io/rspec/#/rspec/S1481/javascript) rules in favor of `unused-imports/no-unused-vars` |
270
+ | `prefer-arrow-functions` | ❌ | [eslint-plugin-prefer-arrow-functions](https://npmjs.com/eslint-plugin-prefer-arrow-functions) (`prefer-arrow-functions`) | Since v0.1.0 |
271
+ | `perfectionist` | ❌ | [eslint-plugin-perfectionist](https://npmjs.com/eslint-plugin-perfectionist) (`perfectionist`) | Since v0.4.0<br>Supports sub-configs for each rule from the plugin since v1.0.0 |
272
+ | `de-morgan` | | [eslint-plugin-de-morgan](https://npmjs.com/eslint-plugin-de-morgan) (`de-morgan`) | Since v0.5.0 |
273
+ | `es` | | [eslint-plugin-es-x](https://npmjs.com/eslint-plugin-es-x) (`es-x`) | Since v0.10.0 |
274
+ | `jsInline` | | [eslint-plugin-html](https://npmjs.com/eslint-plugin-html) (`html`) | Since v0.10.0<br>For linting inlined JS in HTML files |
275
+ | `math` | ✅ | [eslint-plugin-math](https://npmjs.com/eslint-plugin-math) (`math`) | Since v1.0.0 |
276
+ | `erasableSyntaxOnly` | ❌ | [eslint-plugin-erasable-syntax-only](https://npmjs.com/eslint-plugin-erasable-syntax-only) (`erasable-syntax-only`) | Since v1.0.0 |
277
+ | `noUnnecessaryAbstractions` | ✅ | [eslint-plugin-unnecessary-abstractions](https://npmjs.com/eslint-plugin-unnecessary-abstractions) (`unnecessary-abstractions`) | Since v1.0.0 |
275
278
 
276
279
  ### Libraries
277
280
 
278
- | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
279
- | -------------- | -------------------------------------------------------------------- | ------------------------------------ | ----------------- |
280
- | `jest` | ✅ (`jest` is installed) | [eslint-plugin-jest](https://npmjs.com/eslint-plugin-jest) (`jest`) | Since v0.3.0 |
281
- | `jest/extended` | ✅ (`jest-extended` is installed) | [eslint-plugin-jest-extended](https://npmjs.com/eslint-plugin-jest-extended) (`jest-extended`) | - |
282
- | `jest/typescript` | ✅ (`ts` config is enabled) | [eslint-plugin-jest](https://npmjs.com/eslint-plugin-jest) (`jest`) | Only TypeScript-specific rules from `eslint-plugin-jest` |
283
- | `jest/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
284
- | `vitest` | ✅ (`vitest` is installed) | [@vitest/eslint-plugin](https://npmjs.com/package/@vitest/eslint-plugin) (`vitest`) | Since v0.3.0 |
285
- | `vitest/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
286
- | `ava` | ✅ (`ava` is installed) | [eslint-plugin-ava](https://npmjs.com/eslint-plugin-ava) (`ava`) | Since v1.0.0 |
287
- | `ava/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
288
- | `qunit` | ✅ (`qunit` is installed) | [eslint-plugin-qunit](https://npmjs.com/eslint-plugin-qunit) (`qunit`) | Since v1.0.0 |
289
- | `qunit/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
290
- | ![Testing Library](./assets/logos-testing-library.svg) `testingLibrary` | ✅ (`@testing-library/dom` is installed) | [eslint-plugin-testing-library](https://npmjs.com/eslint-plugin-testing-library) (`testing-library`) | Since v1.0.0 |
291
- | ![Testing Library](./assets/logos-testing-library.svg) `testingLibrary/angular` | ✅ (`angular` config is enabled) | ^ | Since v1.0.0 |
292
- | ![Testing Library](./assets/logos-testing-library.svg) `testingLibrary/marko` | ✅ (`marko` is installed) | ^ | Since v1.0.0 |
293
- | ![Testing Library](./assets/logos-testing-library.svg) `testingLibrary/react` | ✅ (`react` config is enabled) | ^ | Since v1.0.0 |
294
- | ![Testing Library](./assets/logos-testing-library.svg) `testingLibrary/svelte` | ✅ (`svelte` config is enabled) | ^ | Since v1.0.0 |
295
- | ![Testing Library](./assets/logos-testing-library.svg) `testingLibrary/vue` | ✅ (`vue` config is enabled) | ^ | Since v1.0.0 |
296
- | ![Testing Library](./assets/logos-testing-library.svg) `testingLibrary/*/noOnlyTests` | ✅ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
297
- | `noOnlyTests` | ❌ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
298
- | `tanstackQuery` | ✅ (`@tanstack/query-core` is installed) | [@tanstack/eslint-plugin-query](https://npmjs.com/package/@tanstack/eslint-plugin-query) (`@tanstack/query`) | Since v1.0.0 |
299
- | ![Storybook](./assets/logos-storybook-icon.svg) `storybook` | ✅ (`storybook` is installed) | [eslint-plugin-storybook](https://npmjs.com/eslint-plugin-storybook) (`storybook`) | Since v1.0.0 |
300
- | ![Cypress](./assets/vscode-icons-file-type-light-cypress.svg) `cypress` | ✅ (`cypress` is installed) | [eslint-plugin-cypress](https://npmjs.com/eslint-plugin-cypress) (`cypress`) | Since v1.0.0 |
301
- | ![Cypress](./assets/vscode-icons-file-type-light-cypress.svg) `cypress/noOnlyTests` | ✅ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
302
- | ![Mocha](./assets/devicon-mocha.svg) `mocha` | ✅ (`mocha` is installed) | [eslint-plugin-mocha](https://npmjs.com/eslint-plugin-mocha) (`mocha`) | Since v1.0.0 |
303
- | ![Mocha](./assets/devicon-mocha.svg) `mocha/noOnlyTests` | ✅ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
304
- | ![Turborepo](./assets/material-icon-theme-turborepo.svg) `turbo` | ✅ (`turbo` is installed) | [eslint-plugin-turbo](https://npmjs.com/eslint-plugin-turbo) (`turbo`) | Since v1.0.0 |
305
- | ![Playwright](./assets/devicon-playwright.svg) `playwright` | ✅ (`playwright` is installed) | [eslint-plugin-playwright](https://npmjs.com/eslint-plugin-playwright) (`playwright`) | Since v1.0.0 |
306
- | ![Playwright](./assets/devicon-playwright.svg) `playwright/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests](https://npmjs.com/eslint-plugin-no-only-tests) (`no-only-tests`) | Since v1.0.0 |
307
- | ![Lodash](./assets/devicon-plain-lodash.svg) `youDontNeedLodashUnderscore` | ✅ (`lodash`, `lodash-es` or `lodash.*` is installed) | [eslint-plugin-you-dont-need-lodash-underscore](https://npmjs.com/eslint-plugin-you-dont-need-lodash-underscore) (`you-dont-need-lodash-underscore`) | Since v1.0.0 |
308
- | ![RxJS](./assets/devicon-rxjs.svg) `rxjs` | ✅ (`rxjs` is installed) | [@smarttools/eslint-plugin-rxjs](https://npmjs.com/@smarttools/eslint-plugin-rxjs) (`rxjs`) | Since v1.0.0 |
309
- | ![Nx](./assets/vscode-icons-file-type-light-nx.svg) `nx` | ✅ (`nx` is installed) | [@nx/eslint-plugin](https://npmjs.com/@nx/eslint-plugin) (`nx`) | Since v1.0.0 |
310
- | `importZod` | ✅ (`zod` and `next` are installed) | [eslint-plugin-import-zod](https://npmjs.com/eslint-plugin-import-zod) (`import-zod`) | Enforces namespace imports for `zod`<br>Since v1.0.0 |
311
- | ![UnoCSS](./assets/logos-unocss.svg) `unocss` | ✅ (`unocss` is installed) | [@unocss/eslint-plugin](https://npmjs.com/@unocss/eslint-plugin) (`unocss`) | Since v1.0.0 |
281
+ | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
282
+ | ----------------------------------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
283
+ | `jest` | ✅ (`jest` is installed) | [eslint-plugin-jest](https://npmjs.com/eslint-plugin-jest) (`jest`) | Since v0.3.0 |
284
+ | `jest/extended` | ✅ (`jest-extended` is installed) | [eslint-plugin-jest-extended](https://npmjs.com/eslint-plugin-jest-extended) (`jest-extended`) | - |
285
+ | `jest/typescript` | ✅ (`ts` config is enabled) | [eslint-plugin-jest](https://npmjs.com/eslint-plugin-jest) (`jest`) | Only TypeScript-specific rules from `eslint-plugin-jest` |
286
+ | `jest/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
287
+ | `vitest` | ✅ (`vitest` is installed) | [@vitest/eslint-plugin](https://npmjs.com/package/@vitest/eslint-plugin) (`vitest`) | Since v0.3.0 |
288
+ | `vitest/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
289
+ | `ava` | ✅ (`ava` is installed) | [eslint-plugin-ava](https://npmjs.com/eslint-plugin-ava) (`ava`) | Since v1.0.0 |
290
+ | `ava/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
291
+ | `qunit` | ✅ (`qunit` is installed) | [eslint-plugin-qunit](https://npmjs.com/eslint-plugin-qunit) (`qunit`) | Since v1.0.0 |
292
+ | `qunit/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
293
+ | ![Testing Library] `testingLibrary` | ✅ (`@testing-library/dom` is installed) | [eslint-plugin-testing-library](https://npmjs.com/eslint-plugin-testing-library) (`testing-library`) | Since v1.0.0 |
294
+ | ![Testing Library] `testingLibrary/angular` | ✅ (`angular` config is enabled) | ^ | Since v1.0.0 |
295
+ | ![Testing Library] `testingLibrary/marko` | ✅ (`marko` is installed) | ^ | Since v1.0.0 |
296
+ | ![Testing Library] `testingLibrary/react` | ✅ (`react` config is enabled) | ^ | Since v1.0.0 |
297
+ | ![Testing Library] `testingLibrary/svelte` | ✅ (`svelte` config is enabled) | ^ | Since v1.0.0 |
298
+ | ![Testing Library] `testingLibrary/vue` | ✅ (`vue` config is enabled) | ^ | Since v1.0.0 |
299
+ | ![Testing Library] `testingLibrary/*/noOnlyTests` | ✅ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
300
+ | `noOnlyTests` | ❌ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
301
+ | `tanstackQuery` | ✅ (`@tanstack/query-core` is installed) | [@tanstack/eslint-plugin-query](https://npmjs.com/package/@tanstack/eslint-plugin-query) (`@tanstack/query`) | Since v1.0.0 |
302
+ | ![Storybook](./assets/logos-storybook-icon.svg) `storybook` | ✅ (`storybook` is installed) | [eslint-plugin-storybook](https://npmjs.com/eslint-plugin-storybook) (`storybook`) | Since v1.0.0 |
303
+ | ![Cypress](./assets/vscode-icons-file-type-light-cypress.svg) `cypress` | ✅ (`cypress` is installed) | [eslint-plugin-cypress](https://npmjs.com/eslint-plugin-cypress) (`cypress`) | Since v1.0.0 |
304
+ | ![Cypress](./assets/vscode-icons-file-type-light-cypress.svg) `cypress/noOnlyTests` | ✅ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
305
+ | ![Mocha](./assets/devicon-mocha.svg) `mocha` | ✅ (`mocha` is installed) | [eslint-plugin-mocha](https://npmjs.com/eslint-plugin-mocha) (`mocha`) | Since v1.0.0 |
306
+ | ![Mocha](./assets/devicon-mocha.svg) `mocha/noOnlyTests` | ✅ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
307
+ | ![Turborepo](./assets/material-icon-theme-turborepo.svg) `turbo` | ✅ (`turbo` is installed) | [eslint-plugin-turbo](https://npmjs.com/eslint-plugin-turbo) (`turbo`) | Since v1.0.0 |
308
+ | ![Playwright](./assets/devicon-playwright.svg) `playwright` | ✅ (`playwright` is installed) | [eslint-plugin-playwright](https://npmjs.com/eslint-plugin-playwright) (`playwright`) | Since v1.0.0 |
309
+ | ![Playwright](./assets/devicon-playwright.svg) `playwright/noOnlyTests` | ❌ | [eslint-plugin-no-only-tests] (`no-only-tests`) | Since v1.0.0 |
310
+ | ![Lodash](./assets/devicon-plain-lodash.svg) `youDontNeedLodashUnderscore` | ✅ (`lodash`, `lodash-es` or `lodash.*` is installed) | [eslint-plugin-you-dont-need-lodash-underscore](https://npmjs.com/eslint-plugin-you-dont-need-lodash-underscore) (`you-dont-need-lodash-underscore`) | Since v1.0.0 |
311
+ | ![RxJS](./assets/devicon-rxjs.svg) `rxjs` | ✅ (`rxjs` is installed) | [@smarttools/eslint-plugin-rxjs](https://npmjs.com/@smarttools/eslint-plugin-rxjs) (`rxjs`) | Since v1.0.0 |
312
+ | ![Nx](./assets/vscode-icons-file-type-light-nx.svg) `nx` | ✅ (`nx` is installed) | [@nx/eslint-plugin](https://npmjs.com/@nx/eslint-plugin) (`nx`) | Since v1.0.0 |
313
+ | `importZod` | ✅ (`zod` and `next` are installed) | [eslint-plugin-import-zod](https://npmjs.com/eslint-plugin-import-zod) (`import-zod`) | Enforces namespace imports for `zod`<br>Since v1.0.0 |
314
+ | ![UnoCSS](./assets/logos-unocss.svg) `unocss` | ✅ (`unocss` is installed) | [@unocss/eslint-plugin](https://npmjs.com/@unocss/eslint-plugin) (`unocss`) | Since v1.0.0 |
312
315
 
313
316
  ### Miscellaneous
314
317
 
315
- | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
316
- | -------------- | ------------------------------------------- | ------------------------------------ | ----------------- |
317
- | `casePolice` | ❌ | [eslint-plugin-case-police](https://npmjs.com/eslint-plugin-case-police) (`case-police`) | Since v0.9.0 |
318
- | `noStylisticRules` | ❌ | - | Since v1.0.0<br>Config to disable most of the stylistic rules. Can be useful when integrating eslint-config-un into an existing project. |
319
- | `noUnsanitized` | ✅ | [eslint-plugin-no-unsanitized](https://npmjs.com/eslint-plugin-no-unsanitized) (`no-unsanitized`) | Since v1.0.0 |
320
- | ![CSpell](./assets/vscode-icons-file-type-cspell.svg) `cspell` | ❌ | [@cspell/eslint-plugin](https://npmjs.com/package/@cspell/eslint-plugin) (`@cspell`) | Since v1.0.0 |
321
- | ![ESLint](./assets/devicon-eslint.svg) `eslintPlugin` | ❌ | [eslint-plugin-eslint-plugin](https://npmjs.com/eslint-plugin-eslint-plugin) (`eslint-plugin`) | Since v1.0.0<br>For linting ESLint plugins |
322
- | `fileProgress` | ❌ | [eslint-plugin-file-progress](https://npmjs.com/eslint-plugin-file-progress) (`file-progress`) | Since v1.0.0<br>An ESlint plugin to print file progress |
323
- | `compat` | ❌ | [eslint-plugin-compat](https://npmjs.com/eslint-plugin-compat) (`compat`) | Since v1.0.0 |
324
- | `webComponents` | ❌ | [eslint-plugin-wc](https://npmjs.com/eslint-plugin-wc) (`wc`) | Since v1.0.0 |
325
- | `header` | ❌ | [eslint-plugin-header](https://npmjs.com/eslint-plugin-header) (`header`) | Since v1.0.0 |
326
- | `headers` | ❌ | [eslint-plugin-headers](https://npmjs.com/eslint-plugin-headers) (`headers`) | Since v1.0.0 |
318
+ | Un config name | Enabled by default?<br>(optional condition) | Primary plugin(s) (`default-prefix`) | Description/Notes |
319
+ | -------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
320
+ | `casePolice` | ❌ | [eslint-plugin-case-police](https://npmjs.com/eslint-plugin-case-police) (`case-police`) | Since v0.9.0 |
321
+ | `noStylisticRules` | ❌ | - | Since v1.0.0<br>Config to disable most of the stylistic rules. Can be useful when integrating eslint-config-un into an existing project. |
322
+ | `noUnsanitized` | ✅ | [eslint-plugin-no-unsanitized](https://npmjs.com/eslint-plugin-no-unsanitized) (`no-unsanitized`) | Since v1.0.0 |
323
+ | ![CSpell](./assets/vscode-icons-file-type-cspell.svg) `cspell` | ❌ | [@cspell/eslint-plugin](https://npmjs.com/package/@cspell/eslint-plugin) (`@cspell`) | Since v1.0.0 |
324
+ | ![ESLint](./assets/devicon-eslint.svg) `eslintPlugin` | ❌ | [eslint-plugin-eslint-plugin](https://npmjs.com/eslint-plugin-eslint-plugin) (`eslint-plugin`) | Since v1.0.0<br>For linting ESLint plugins |
325
+ | `fileProgress` | ❌ | [eslint-plugin-file-progress](https://npmjs.com/eslint-plugin-file-progress) (`file-progress`) | Since v1.0.0<br>An ESlint plugin to print file progress |
326
+ | `compat` | ❌ | [eslint-plugin-compat](https://npmjs.com/eslint-plugin-compat) (`compat`) | Since v1.0.0 |
327
+ | `webComponents` | ❌ | [eslint-plugin-wc](https://npmjs.com/eslint-plugin-wc) (`wc`) | Since v1.0.0 |
328
+ | `header` | ❌ | [eslint-plugin-header](https://npmjs.com/eslint-plugin-header) (`header`) | Since v1.0.0 |
329
+ | `headers` | ❌ | [eslint-plugin-headers](https://npmjs.com/eslint-plugin-headers) (`headers`) | Since v1.0.0 |
327
330
 
328
331
  ## How to use
329
332
 
@@ -400,26 +403,60 @@ eslint-config-un provides the ability to change any registered plugin prefix. Ad
400
403
 
401
404
  #### Default renames
402
405
 
403
- | Plugin | Suggested prefix | Our prefix | Reason |
404
- | -------------------------------------------------------------------- | -------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------- |
405
- | [`typescript-eslint`](https://npmjs.com/typescript-eslint) | `@typescript-eslint` | `ts` | More concise and convenient to use |
406
- | [`eslint-plugin-import-x`](https://npmjs.com/eslint-plugin-import-x) | `import-x` | `import` | This plugin is a fork and is meant to replace the original plugin with `import` prefix |
407
- | [`eslint-plugin-n`](https://npmjs.com/eslint-plugin-n) | `n` | `node` | Same ^ |
408
- | [`eslint-plugin-css`](https://npmjs.com/eslint-plugin-css) | `css` | `css-in-js` | Conflicts with [`@eslint/css`](https://npmjs.com/package/@eslint/css) and our name better captures the essence of the plugin |
406
+ | Plugin | Suggested prefix | Our prefix | Reason |
407
+ | ------------------------------------------------------------------------ | -------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------- |
408
+ | [`typescript-eslint`](https://npmjs.com/typescript-eslint) | `@typescript-eslint` | `ts` | More concise and convenient to use |
409
+ | [`eslint-plugin-import-x`](https://npmjs.com/eslint-plugin-import-x) | `import-x` | `import` | This plugin is a fork and is meant to replace the original plugin with `import` prefix |
410
+ | [`eslint-plugin-n`](https://npmjs.com/eslint-plugin-n) | `n` | `node` | Same ^ |
411
+ | [`eslint-plugin-css`](https://npmjs.com/eslint-plugin-css) | `css` | `css-in-js` | Conflicts with [`@eslint/css`](https://npmjs.com/package/@eslint/css) and our name better captures the essence of the plugin |
412
+ | [`eslint-plugin-jsx-a11y-x`](https://npmjs.com/eslint-plugin-jsx-a11y-x) | `jsx-a11y-x` | `jsx-a11y` | This plugin is a fork and is meant to replace the original plugin with `jsx-a11y` prefix |
409
413
 
410
- <!-- eslint-disable-next-line markdown/no-missing-label-refs -->
411
414
  > [!NOTE]
412
415
  > If you rename a plugin, you still have to use the original prefix within `overrides`, `overridesAny` and `extraConfigs`. eslint-config-un will rename the rules accordingly for you.
413
416
 
414
- <!-- eslint-disable-next-line markdown/no-missing-label-refs -->
415
417
  > [!WARNING] Renaming plugins and `eslint-disable` directives
416
418
  > If you rename a plugin, you will have to manually rename the rules within `eslint-disable-*` directives.
417
419
 
418
420
  ### Disabling rule autofix
419
421
 
420
- ESLint [doesn't (yet?) have the ability to disable autofix](https://github.com/eslint/rfcs/pull/125) for a rule by the user on per-rule basis. Our config attempts to provide this missing functionality by providing the limited ability to disable autofix for a rule as a whole or per-file and per-rule basis, but with a caveat that the rule will have `disable-autofix` prefix in its name. Additionally, we disable autofix for some rules by default, the list of which is available below.
422
+ ESLint [doesn't (yet?) have the ability to disable autofix](https://github.com/eslint/rfcs/pull/125) for a rule by the user on per-rule basis. Our config attempts to provide this missing functionality by giving the ability to disable autofix for a rule as a whole ("globally") or per-file and per-rule basis, but with a caveat that the rule will have `disable-autofix` prefix in its name.
423
+
424
+ #### Globally disabling rule autofix
425
+
426
+ You can disable autofix for any fixable rule globally using `autofixDisabledGloballyFor` root option:
427
+
428
+ ```ts
429
+ import {eslintConfig} from 'eslint-config-un';
430
+
431
+ export default eslintConfig({
432
+ autofixDisabledGloballyFor: {
433
+ rules: {
434
+ 'ts/array-type': true,
435
+ },
436
+ },
437
+ });
438
+ ```
439
+
440
+ Note that by default we already globally disable autofix for some rules, the actual list of which can be found in JSDoc of this option.
441
+
442
+ It's also possible to disable autofixes for all the rules in the plugin at once, and then only enable them for the specific rules:
443
+
444
+ <!-- eslint-skip -->
445
+
446
+ ```ts
447
+ autofixDisabledGloballyFor: {
448
+ plugins: {
449
+ ts: true,
450
+ },
451
+ rules: {
452
+ 'ts/array-type': false,
453
+ },
454
+ },
455
+ ```
456
+
457
+ #### Disabling rule autofix per-file
421
458
 
422
- To disable autofix for a rule, use an object notation for the rule entry:
459
+ To disable autofix for a rule only granularly, use an object notation for the rule entry:
423
460
 
424
461
  ```ts
425
462
  import {eslintConfig} from 'eslint-config-un';
@@ -430,7 +467,7 @@ export default eslintConfig({
430
467
  overrides: {
431
468
  'unicorn/better-regex': {
432
469
  severity: 2,
433
- disableAutofix: 'prefixed', // or `unprefixed` or `true`/`false`
470
+ disableAutofix: true,
434
471
  },
435
472
  },
436
473
  },
@@ -438,10 +475,7 @@ export default eslintConfig({
438
475
  });
439
476
  ```
440
477
 
441
- * `unprefixed`: will disable autofix without changing the name of the rule, but it will be disabled for **all** files.
442
- * `prefixed`: will create a plugin with `disable-autofix` prefix and copy this rule into it. The final rule is going to be `disable-autofix/<rule-name>` and `<rule-name>` will be disabled in the resulting flat config.
443
- * `true`: use the default autofix disabling method, determined in `disableAutofixMethod.default` root option, which defaults to `unprefixed`.
444
- * `false`: re-enable autofix for the rule (does nothing if autofix for this rule is disabled anywhere else with `unprefixed` method).
478
+ This will technically create a plugin with `disable-autofix` prefix and copy this rule into it. The final rule is going to be given a name `disable-autofix/<rule-name>` which would replace `<rule-name>` entry in the resulting config.
445
479
 
446
480
  ## Configs notes
447
481
 
@@ -483,7 +517,7 @@ Set to `true` if you don't want `ignores` to be merged with our ignore patterns,
483
517
 
484
518
  ### `gitignore`
485
519
 
486
- By default `.gitignore`d files will be added to `ignores` list. Set to `false` to disable this behavior. You may also provide an object which configures [eslint-config-flat-gitignore](https://npmjs.com/eslint-config-flat-gitignore), which provides this functionality in the first place.
520
+ By default `.gitignore`d files will be added to `ignores` list. Set to `false` to disable this behavior. You may also provide an object which configures [eslint-config-flat-gitignore](https://npmjs.com/eslint-config-flat-gitignore), which provides this functionality in the first place.
487
521
 
488
522
  ### `mode`
489
523
 
@@ -525,6 +559,7 @@ Alternatively, you can use [`@eslint/config-inspector`](https://npmjs.com/packag
525
559
 
526
560
  ## Troubleshooting & caveats
527
561
 
562
+ <!-- eslint-disable-next-line markdown-preferences/heading-casing, markdown-preferences/padding-line-between-blocks -->
528
563
  ### TypeError: Key `languageOptions`: Key `globals`: Global `AudioWorkletGlobalScope ` has leading or trailing whitespace.
529
564
 
530
565
  Install `globals` package as a dev dependency.
@@ -533,9 +568,23 @@ Install `globals` package as a dev dependency.
533
568
 
534
569
  If you would like not to wait until the dependencies of `eslint-config-un` are updated or by whatever other reason you need to install a different version of a dependency, you can do that using your package manager's settings for all but the following packages:
535
570
 
536
- | Package name | Reason |
537
- | ------------ | ------ |
538
- | [`eslint-plugin-prettier`](https://npmjs.com/eslint-plugin-prettier) | Patched by us to enable formatting of "fenced code blocks" inside Markdown files |
539
- | [`eslint-plugin-no-type-assertion`](https://npmjs.com/eslint-plugin-no-type-assertion) | Has outdated requirements of peer dependencies |
540
- | [`@angular-eslint/eslint-plugin-template@17.5.3`](https://npmjs.com/package/@angular-eslint/eslint-plugin-template/v/17.5.3) | Old version with outdated requirements of peer dependencies |
541
- | [`@angular-eslint/eslint-plugin@18.4.3`](https://npmjs.com/package/@angular-eslint/eslint-plugin-template/v/18.4.3) | ^ |
571
+ | Package name | Reason |
572
+ | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
573
+ | [`eslint-plugin-prettier`](https://npmjs.com/eslint-plugin-prettier) | Patched by us to enable formatting of "fenced code blocks" inside Markdown files |
574
+ | [`eslint-plugin-no-type-assertion`](https://npmjs.com/eslint-plugin-no-type-assertion) | Has outdated requirements of peer dependencies |
575
+ | [`@angular-eslint/eslint-plugin-template@17.5.3`](https://npmjs.com/package/@angular-eslint/eslint-plugin-template/v/17.5.3) | Old version with outdated requirements of peer dependencies |
576
+ | [`@angular-eslint/eslint-plugin@18.4.3`](https://npmjs.com/package/@angular-eslint/eslint-plugin-template/v/18.4.3) | ^ |
577
+
578
+ [@eslint-react/eslint-plugin]: https://npmjs.com/package/@eslint-react/eslint-plugin
579
+ [Angular]: ./assets/devicon-angular.svg
580
+ [CSS]: ./assets/devicon-css3.svg
581
+ [Ember]: ./assets/devicon-ember.svg
582
+ [Markdown]: ./assets/mdi-language-markdown.svg
583
+ [ReactJS]: ./assets/devicon-react.svg
584
+ [TailwindCSS]: ./assets/devicon-tailwindcss.svg
585
+ [Testing Library]: ./assets/logos-testing-library.svg
586
+ [TypeScript]: ./assets/devicon-typescript.svg
587
+ [VueJS]: ./assets/devicon-vuejs.svg
588
+ [eslint-plugin-no-only-tests]: https://npmjs.com/eslint-plugin-no-only-tests
589
+ [npm]: ./assets/devicon-npm.svg
590
+ [pnpm]: ./assets/devicon-pnpm.svg