CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-nuxt--eslint-config

ESLint config for Nuxt projects with flat config support and extensive customization options

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

utility-functions.mddocs/

Utility Functions

Core utility function for configuration resolution and normalization used in the ESLint configuration system.

Capabilities

Configuration Resolution

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 defaults

Default Resolution Logic

Understanding how the utility function applies defaults and resolves configurations.

The resolveOptions function follows this resolution strategy:

  1. Directory Resolution: Establishes directory structure with Nuxt conventions

    • root: Defaults to ['.', './app'] (supports both Nuxt 3 and 4)
    • src: Defaults to same as root
    • pages, layouts, components, etc.: Computed from src directories
  2. Feature Detection: Auto-detects capabilities and applies defaults

    • typescript: Automatically enabled if TypeScript package is detected
    • standalone: Enabled by default for complete configuration
    • stylistic, tooling, formatters: Disabled by default
  3. Configuration 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

docs

configuration-options.md

core-configuration.md

flat-config-utilities.md

index.md

utility-functions.md

tile.json