diff --git a/packages/eslint-plugin/lib/configs/all.js b/packages/eslint-plugin/lib/configs/all.js new file mode 100644 index 00000000..75eb488b --- /dev/null +++ b/packages/eslint-plugin/lib/configs/all.js @@ -0,0 +1,10 @@ +const rules = require("../rules"); + +const allRules = Object.keys(rules).reduce((acc, ruleName) => { + acc[`@html-eslint/${ruleName}`] = "error"; + return acc; +}, /** @type {Record} */ ({})); + +module.exports = { + allRules, +}; diff --git a/packages/eslint-plugin/lib/index.js b/packages/eslint-plugin/lib/index.js index 0fbb0d0a..658651d8 100644 --- a/packages/eslint-plugin/lib/index.js +++ b/packages/eslint-plugin/lib/index.js @@ -3,6 +3,7 @@ const { recommendedRules, recommendedLegacyRules, } = require("./configs/recommended"); +const { allRules } = require("./configs/all"); const { HTMLLanguage } = require("./languages/html-language"); const { name, version } = require("../package.json"); const parser = require("@html-eslint/parser"); @@ -42,6 +43,18 @@ const plugin = { }, rules: recommendedLegacyRules, }, + "flat/all": { + plugins: { + /** @type {ESLint.Plugin} */ + get "@html-eslint"() { + return plugin; + }, + }, + languageOptions: { + parser, + }, + rules: allRules, + }, }, }; diff --git a/packages/eslint-plugin/tests/configs.test.js b/packages/eslint-plugin/tests/configs.test.js index 80a49ab5..470d8358 100644 --- a/packages/eslint-plugin/tests/configs.test.js +++ b/packages/eslint-plugin/tests/configs.test.js @@ -6,6 +6,7 @@ const RULES_DIR = path.resolve(__dirname, "../lib/rules"); const RULE_TESTS_DIR = path.resolve(__dirname, "./rules"); const RULE_DOCS_DIR = path.resolve(__dirname, "../../../docs/rules"); const { recommendedLegacyRules } = require("../lib/configs/recommended"); +const { allRules } = require("../lib/configs/all"); describe("rules", () => { const exportedRuleNames = Object.keys(exportedRules); @@ -57,4 +58,16 @@ describe("configs", () => { expect.arrayContaining(recommendedRules) ); }); + + test("all rules should be included in the all config", () => { + const allExportedRules = Object.keys(exportedRules).map( + (name) => `@html-eslint/${name}` + ); + expect(Object.keys(allRules)).toEqual( + expect.arrayContaining(allExportedRules) + ); + expect(allExportedRules).toEqual( + expect.arrayContaining(Object.keys(allRules)) + ); + }); });