ESLint config for Nuxt projects with flat config support and extensive customization options
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Core utility function for configuration resolution and normalization used in the ESLint configuration system.
Function for resolving and normalizing configuration options with intelligent defaults.
/**
* Resolve and normalize configuration options with intelligent defaults.
* Applies default values for directories and features based on project structure.
*
* @param config - Configuration options to resolve
* @returns Resolved configuration with all defaults applied
*/
function resolveOptions(config: NuxtESLintConfigOptions): NuxtESLintConfigOptionsResolved;
interface NuxtESLintConfigOptionsResolved {
features: Required<NotNill<NuxtESLintFeaturesOptions>>;
dirs: Required<NotNill<DirectoriesConfig>>;
}Usage Examples:
import { resolveOptions } from "@nuxt/eslint-config";
// Basic resolution with defaults
const resolved = resolveOptions({});
console.log(resolved.features.typescript); // true if TypeScript is installed
console.log(resolved.dirs.root); // ['.', './app']
// Partial configuration resolution
const resolved2 = resolveOptions({
features: {
stylistic: true
},
dirs: {
src: ["./src"]
}
});
// All other features get defaults, directories are computed from src
// The function automatically:
// - Detects TypeScript availability using package detection
// - Sets up directory patterns based on src/root configuration
// - Applies Nuxt 3/4 conventions for project structure
// - Merges user options with intelligent defaultsUnderstanding how the utility function applies defaults and resolves configurations.
The resolveOptions function follows this resolution strategy:
Directory Resolution: Establishes directory structure with Nuxt conventions
root: Defaults to ['.', './app'] (supports both Nuxt 3 and 4)src: Defaults to same as rootpages, layouts, components, etc.: Computed from src directoriesFeature Detection: Auto-detects capabilities and applies defaults
typescript: Automatically enabled if TypeScript package is detectedstandalone: Enabled by default for complete configurationstylistic, tooling, formatters: Disabled by defaultConfiguration Merging: User-provided options override defaults while maintaining type safety
Internal Resolution Process:
// Example of the resolution logic:
const resolvedConfig = resolveOptions({
features: { stylistic: true },
dirs: { root: ["./app"] }
});
// Results in:
// {
// features: {
// standalone: true,
// stylistic: true, // User provided
// typescript: true, // Auto-detected
// tooling: false, // Default
// formatters: false, // Default
// nuxt: {}, // Default
// import: {} // Default
// },
// dirs: {
// root: ["./app"], // User provided
// src: ["./app"], // Computed from root
// pages: ["./app/pages"], // Computed from src
// layouts: ["./app/layouts"], // Computed from src
// components: ["./app/components"], // Computed from src
// // ... other directories computed similarly
// }
// }Install with Tessl CLI
npx tessl i tessl/npm-nuxt--eslint-config