@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
JavaScript
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 };