ESLint config for Nuxt projects with flat config support and extensive customization options
npx @tessl/cli install tessl/npm-nuxt--eslint-config@1.9.0@nuxt/eslint-config is a comprehensive ESLint configuration package specifically designed for Nuxt 3 projects. It provides a shared, unopinionated-by-default yet highly customizable ESLint setup that integrates seamlessly with Nuxt's development workflow. The configuration supports TypeScript, Vue.js components, modern JavaScript features, and various code quality tools through an extensive plugin ecosystem.
npm install @nuxt/eslint-configimport { createConfigForNuxt, defineFlatConfigs, resolveOptions } from "@nuxt/eslint-config";For types and interfaces:
import type {
NuxtESLintConfigOptions,
NuxtESLintFeaturesOptions,
ToolingOptions,
OptionsFormatters
} from "@nuxt/eslint-config";For flat config (ESLint 9+):
import { createConfigForNuxt } from "@nuxt/eslint-config/flat";CommonJS:
const { createConfigForNuxt, defineFlatConfigs, resolveOptions } = require("@nuxt/eslint-config");import { createConfigForNuxt } from "@nuxt/eslint-config";
// Basic configuration with defaults
export default createConfigForNuxt();
// With custom options
export default createConfigForNuxt({
features: {
typescript: true,
stylistic: true,
tooling: {
jsdoc: true,
unicorn: true,
regexp: true
}
}
});
// With additional user configs
export default createConfigForNuxt(
{
features: {
formatters: {
css: true,
html: true,
markdown: "prettier"
}
}
},
// Custom rules
{
rules: {
"no-console": "warn"
}
}
);
// Using resolveOptions for configuration inspection
import { resolveOptions } from "@nuxt/eslint-config";
const resolved = resolveOptions({
features: { stylistic: true },
dirs: { src: ["./src"] }
});
console.log(resolved.features.typescript); // Auto-detected
console.log(resolved.dirs.pages); // ["./src/pages"]@nuxt/eslint-config is built around several key components:
FlatConfigComposer for configuration managementPrimary function for creating Nuxt-optimized ESLint configurations with extensive customization options.
function createConfigForNuxt(
options?: NuxtESLintConfigOptions,
...userConfigs: ResolvableFlatConfig[]
): FlatConfigComposer;
interface NuxtESLintConfigOptions {
features?: NuxtESLintFeaturesOptions;
dirs?: DirectoriesConfig;
}
interface NuxtESLintFeaturesOptions {
standalone?: boolean;
tooling?: boolean | ToolingOptions;
import?: boolean | ImportPluginOptions;
stylistic?: boolean | StylisticCustomizeOptions;
formatters?: boolean | OptionsFormatters;
nuxt?: NuxtSpecificOptions;
typescript?: boolean | TypeScriptOptions;
}Utilities for working with ESLint flat configurations and type-safe configuration composition.
function defineFlatConfigs(...configs: ResolvableFlatConfig[]): FlatConfigComposer;
type ResolvableFlatConfig = Linter.Config | Promise<Linter.Config>;Comprehensive type system for configuring all aspects of the ESLint setup, from feature toggles to directory structures.
interface ToolingOptions {
regexp?: boolean;
unicorn?: boolean;
jsdoc?: boolean;
}
interface OptionsFormatters {
css?: 'prettier' | boolean;
html?: 'prettier' | boolean;
xml?: 'prettier' | boolean;
svg?: 'prettier' | boolean;
markdown?: 'prettier' | 'dprint' | boolean;
graphql?: 'prettier' | boolean;
prettierOptions?: any;
dprintOptions?: boolean;
}Core utility for resolving and normalizing configuration options with intelligent defaults.
function resolveOptions(config: NuxtESLintConfigOptions): NuxtESLintConfigOptionsResolved;interface DirectoriesConfig {
src?: string[];
root?: string[];
pages?: string[];
layouts?: string[];
components?: string[];
componentsPrefixed?: string[];
composables?: string[];
plugins?: string[];
modules?: string[];
middleware?: string[];
servers?: string[];
}
interface NuxtSpecificOptions {
sortConfigKeys?: boolean;
}
interface ImportPluginOptions {
package?: 'eslint-plugin-import-lite' | 'eslint-plugin-import-x';
}
interface TypeScriptOptions {
strict?: boolean;
tsconfigPath?: string;
}
interface NuxtESLintConfigOptionsResolved {
features: Required<NotNill<NuxtESLintFeaturesOptions>>;
dirs: Required<NotNill<DirectoriesConfig>>;
}
type NotNill<T> = T extends null | undefined ? never : T;
type Awaitable<T> = T | Promise<T>;