@shayanthenerd/eslint-config
Version:
A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style
41 lines (40 loc) • 1.45 kB
JavaScript
import { globs } from "../helpers/globs.mjs";
import { isEnabled } from "../utils/isEnabled.mjs";
import { defaultOptions } from "../helpers/options/defaultOptions.mjs";
import { getVueRules } from "../rules/vue.mjs";
import { mergeConfigs } from "eslint-flat-config-utils";
import eslintPluginVue from "eslint-plugin-vue";
import { parser } from "typescript-eslint";
import eslintPluginVueAccessibility from "eslint-plugin-vuejs-accessibility";
//#region src/configs/vue.ts
const baseVueConfig = eslintPluginVue.configs["flat/base"].find((config) => config.languageOptions?.parser);
function getVueConfig(options) {
const { vue } = options.configs;
const { overrides } = isEnabled(vue) ? vue : defaultOptions.configs.vue;
const isVueAccessibilityEnabled = isEnabled(vue) && isEnabled(vue.accessibility);
return mergeConfigs({
name: "shayanthenerd/vue",
files: [
globs.src,
globs.jsxTsx,
globs.vue
],
plugins: {
vue: eslintPluginVue,
...isVueAccessibilityEnabled && { "vuejs-accessibility": eslintPluginVueAccessibility }
},
processor: "vue/vue",
languageOptions: {
globals: eslintPluginVueAccessibility.configs["flat/recommended"][0].languageOptions.globals,
parser: baseVueConfig?.languageOptions?.parser,
parserOptions: {
parser,
extraFileExtensions: [".vue"],
vueFeatures: { filter: false }
}
},
rules: getVueRules(options)
}, overrides);
}
//#endregion
export { getVueConfig };