@shayanthenerd/eslint-config
Version:
A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style
34 lines (32 loc) • 1.31 kB
JavaScript
import { globs } from "../utils/globs.js";
import { isEnabled } from "../utils/isEnabled.js";
import { defaultOptions } from "../utils/options/defaultOptions.js";
import { getVueRules } from "../rules/vue.js";
import { getVueAccessibilityRules } from "../rules/vueAccessibility.js";
import typescriptESLint from "typescript-eslint";
import { mergeConfigs } from "eslint-flat-config-utils";
import eslintPluginVue from "eslint-plugin-vue";
import eslintPluginVueAccessibility from "eslint-plugin-vuejs-accessibility";
//#region src/configs/vue.ts
function getVueConfig(options) {
const { vue } = options.configs;
const accessibility = isEnabled(vue) && isEnabled(vue.accessibility);
const { overrides } = isEnabled(vue) ? vue : defaultOptions.configs.vue;
const vueConfig = {
name: "shayanthenerd/vue",
files: [globs.vue],
extends: [eslintPluginVue.configs["flat/recommended"], accessibility ? eslintPluginVueAccessibility.configs["flat/recommended"] : {}],
languageOptions: { parserOptions: {
parser: typescriptESLint.parser,
extraFileExtensions: [".vue"],
vueFeatures: { filter: false }
} },
rules: {
...getVueRules(options),
...accessibility ? getVueAccessibilityRules(options) : {}
}
};
return mergeConfigs(vueConfig, overrides);
}
//#endregion
export { getVueConfig };