UNPKG

@shayanthenerd/eslint-config

Version:

A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style

65 lines (64 loc) 2.03 kB
import { globs } from "../helpers/globs.mjs"; import { isEnabled } from "../utils/isEnabled.mjs"; import { defaultOptions } from "../helpers/options/defaultOptions.mjs"; import { getNuxtRules } from "../rules/nuxt.mjs"; import { mergeConfigs } from "eslint-flat-config-utils"; import eslintPluginVue from "eslint-plugin-vue"; import { parser } from "typescript-eslint"; import eslintPluginNuxt from "@nuxt/eslint-plugin"; import eslintPluginNuxtLinkChecker from "nuxt-link-checker/eslint"; //#region src/configs/nuxt.ts const baseVueConfig = eslintPluginVue.configs["flat/base"].find((config) => config.languageOptions?.parser); const middlewaresConfig = { name: "shayanthenerd/nuxt/middlewares", files: [globs.nuxtMiddlewares], rules: { "consistent-return": "off", "@typescript-eslint/consistent-return": "off" } }; const componentNamesConfig = { name: "shayanthenerd/nuxt/component-names", files: [globs.nuxtAppErrorLayoutsPages], rules: { "vue/match-component-file-name": "off", "vue/multi-word-component-names": "off", "vue/component-definition-name-casing": "off" } }; const serverComponentsConfig = { name: "shayanthenerd/nuxt/server-components", files: [globs.nuxtServerComponents], plugins: { vue: eslintPluginVue }, rules: { "vue/no-multiple-template-root": "error" } }; function getNuxtConfigs(options) { const { nuxt } = options.configs; const { overrides } = isEnabled(nuxt) ? nuxt : defaultOptions.configs.nuxt; return [ mergeConfigs({ name: "shayanthenerd/nuxt", files: [globs.vue], plugins: { "vue": eslintPluginVue, "nuxt": eslintPluginNuxt, "link-checker": eslintPluginNuxtLinkChecker }, processor: "vue/vue", languageOptions: { parser: baseVueConfig?.languageOptions?.parser, parserOptions: { parser, extraFileExtensions: [".vue"], vueFeatures: { filter: false } } }, rules: getNuxtRules() }, overrides), middlewaresConfig, componentNamesConfig, serverComponentsConfig ]; } //#endregion export { getNuxtConfigs };