eslint-config-xaxa
Version:
The ultimate ESLint config - successor to Airbnb Config. Built on Anthony Fu's ESLint config, Airbnb, ESLint Stylistic, Perfectionist, React, TypeScript, Astro, JSDocs, Prettier, Node.js, Unicorns, Promises, and more.
65 lines (64 loc) • 1.56 kB
JavaScript
import { GLOB_JSX, GLOB_TSX } from "@antfu/eslint-config";
import { pluginAntfu, pluginStylistic } from "../plugins.js";
export const StylisticConfigDefaults = {
arrowParens: true,
blockSpacing: true,
braceStyle: "1tbs",
commaDangle: "always-multiline",
indent: 2,
jsx: false,
overrides: {},
pluginName: "style",
quoteProps: "consistent-as-needed",
quotes: "single",
semi: true,
severity: "error"
};
export async function stylistic(options = {}) {
const opts = {
...StylisticConfigDefaults,
...options
};
return [
{
name: "xaxa/stylistic/setup",
plugins: {
antfu: pluginAntfu,
style: pluginStylistic
},
rules: {
...pluginStylistic.configs.customize(opts).rules,
"antfu/consistent-chaining": "error",
"antfu/consistent-list-newline": "off",
"antfu/curly": "error",
"antfu/if-newline": "error",
"antfu/import-dedupe": "error",
"antfu/no-import-dist": "error",
"antfu/no-import-node-modules-by-path": "error",
"antfu/no-top-level-await": "off",
"antfu/no-ts-export-equal": "error",
"antfu/top-level-function": "error"
}
},
{
files: [GLOB_TSX, GLOB_JSX],
name: "xaxa/stylistic/jsx-files",
plugins: { style: pluginStylistic },
rules: {
...pluginStylistic.configs.customize({
...opts,
jsx: true
}).rules,
"style/jsx-curly-spacing": ["error", "never"],
"style/jsx-sort-props": ["error", {
callbacksLast: true,
shorthandFirst: true
}]
}
},
{
name: "xaxa/stylistic/overrides",
rules: { ...opts.overrides }
}
];
}