eslint-config-webpack
Version:
Provides Webpack's eslint rules as an extensible shared config
52 lines (43 loc) • 1.12 kB
JavaScript
import { createRequire } from "node:module";
// eslint-disable-next-line import/no-unresolved
import * as parserJsonc from "jsonc-eslint-parser";
import { rule as orderProperties } from "./rules/order-properties.js";
const require = createRequire(import.meta.url);
const { version } = require("../../package.json");
const rules = {
"order-properties": orderProperties,
};
/** @type {import("eslint").Linter.Config["rules"]} */
const recommendedRules = {
...Object.fromEntries(
Object.entries(rules)
.filter(([, rule]) => rule.meta?.docs?.recommended)
.map(([name]) => [`package-json/${name}`, "error"]),
),
};
/** @type {Record<"recommended", import("eslint").Linter.Config>} */
const configs = {
recommended: {
name: "package-json/recommended",
files: ["**/package.json"],
languageOptions: {
parser: parserJsonc,
},
plugins: {
get "package-json"() {
// eslint-disable-next-line no-use-before-define
return plugin;
},
},
rules: recommendedRules,
},
};
const plugin = {
configs,
meta: {
version,
},
rules,
};
export { configs, rules };
export default plugin;