Skip to content

Commit 2fa5e7f

Browse files
New: add more presets
1 parent 56f1f48 commit 2fa5e7f

File tree

3 files changed

+42
-20
lines changed

3 files changed

+42
-20
lines changed

Diff for: .eslintrc.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,11 @@ module.exports = {
1818
extends: [
1919
'not-an-aardvark/node',
2020
'plugin:node/recommended',
21-
'plugin:eslint-plugin/recommended',
21+
'plugin:eslint-plugin/all',
2222
],
2323
root: true,
2424
rules: {
2525
'require-jsdoc': 'error',
2626
'eslint-plugin/report-message-format': ['error', '^[^a-z].*\\.$'],
27-
'eslint-plugin/test-case-shorthand-strings': 'error',
2827
},
2928
};

Diff for: README.md

+23-11
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,9 @@ Then configure the rules you want to use under the rules section.
4141
}
4242
```
4343

44-
Additionally, you can enable all recommended rules from this plugin:
45-
46-
```json
47-
{
48-
"extends": [
49-
"plugin:eslint-plugin/recommended"
50-
]
51-
}
52-
```
53-
5444
## Supported Rules
5545

56-
✔️ indicates that a rule is recommended.
46+
✔️ indicates that a rule is recommended for all users.
5747
🛠 indicates that a rule is fixable.
5848

5949
Name | ✔️ | 🛠 | Description
@@ -63,3 +53,25 @@ Name | ✔️ | 🛠 | Description
6353
[require-meta-fixable](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/require-meta-fixable.md) | ✔️ | | Requires a `meta.fixable` property for fixable rules
6454
[no-missing-placeholders](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/no-missing-placeholders.md) | ✔️ | | Disallows missing placeholders in rule report messages
6555
[test-case-shorthand-strings](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/test-case-shorthand-strings.md) | | | Enforces consistent usage of shorthand strings for test cases with no options
56+
57+
## Supported Presets
58+
59+
Presets are enabled by adding a line to the `extends` list in your config file. For example, to enable the `recommended` preset, use:
60+
61+
```json
62+
{
63+
"extends": [
64+
"plugin:eslint-plugin/recommended"
65+
]
66+
}
67+
```
68+
69+
* `recommended` enables all recommended rules from this plugin.
70+
* `rules-recommended` enables all recommended rules that are aimed at linting ESLint rule files.
71+
* `tests-recommended` enables all recommended rules that are aimed at linting ESLint test files.
72+
73+
* `all` enables all rules in this plugin.
74+
* `rules` enables all rules that are aimed at linting ESLint rule files.
75+
* `tests` enables all rules that are aimed at linting ESLint test files.
76+
77+
The list of recommended rules will only change in a major release of this plugin. However, new non-recommended rules might be added in a minor release of this plugin. Therefore, the using the `all`, `rules`, and `tests` presets is **not recommended for production use**, because the addition of new rules in a minor release could break your build.

Diff for: lib/index.js

+18-7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ const fs = require('fs');
1313
const path = require('path');
1414
const PLUGIN_NAME = require('../package').name.replace(/^eslint-plugin-/, '');
1515

16+
const configFilters = {
17+
all: () => true,
18+
recommended: rule => rule.meta.docs.recommended,
19+
rules: rule => rule.meta.docs.category === 'Rules',
20+
tests: rule => rule.meta.docs.category === 'Tests',
21+
'rules-recommended': rule => configFilters.recommended(rule) && configFilters.rules(rule),
22+
'tests-recommended': rule => configFilters.recommended(rule) && configFilters.tests(rule),
23+
};
24+
1625
// ------------------------------------------------------------------------------
1726
// Plugin Definition
1827
// ------------------------------------------------------------------------------
@@ -27,10 +36,12 @@ const allRules = fs
2736

2837
module.exports.rules = allRules;
2938

30-
module.exports.configs = {
31-
recommended: {
32-
rules: Object.keys(allRules)
33-
.filter(ruleName => allRules[ruleName].meta.docs.recommended)
34-
.reduce((rules, ruleName) => Object.assign(rules, { [`${PLUGIN_NAME}/${ruleName}`]: 2 }), {}),
35-
},
36-
};
39+
module.exports.configs = Object.keys(configFilters).reduce((configs, configName) => {
40+
return Object.assign(configs, {
41+
[configName]: {
42+
rules: Object.keys(allRules)
43+
.filter(ruleName => configFilters[configName](allRules[ruleName]))
44+
.reduce((rules, ruleName) => Object.assign(rules, { [`${PLUGIN_NAME}/${ruleName}`]: 'error' }), {}),
45+
},
46+
});
47+
}, {});

0 commit comments

Comments
 (0)