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

flat-config-utilities.mddocs/

Flat Config Utilities

Utilities for working with ESLint flat configurations and type-safe configuration composition.

Capabilities

Define Flat Configs

Provides type definitions for constructing ESLint flat config items with promise resolution and type safety.

/**
 * Provide type definitions for constructing ESLint flat config items.
 * This function takes flat config item, or an array of them as rest arguments.
 * It also automatically resolves the promise if the config item is a promise.
 * 
 * @param configs - Flat config items or promises of config items
 * @returns FlatConfigComposer for chaining and composition
 */
function defineFlatConfigs(...configs: ResolvableFlatConfig[]): FlatConfigComposer;

type ResolvableFlatConfig = Linter.Config | Promise<Linter.Config>;

Usage Examples:

import { defineFlatConfigs } from "@nuxt/eslint-config";
import js from "@eslint/js";

// Define multiple flat configs
export default defineFlatConfigs(
  // Basic recommended rules
  js.configs.recommended,
  
  // Custom rules
  {
    rules: {
      "no-unused-vars": "warn",
      "prefer-const": "error"
    }
  },
  
  // Async config (will be resolved automatically)
  import("./custom-config.js"),
  
  // Conditional config
  process.env.NODE_ENV === "development" ? {
    rules: {
      "no-console": "off"
    }
  } : undefined
);

// Chaining with other configs
export default defineFlatConfigs(
  js.configs.recommended
).append({
  files: ["**/*.ts"],
  rules: {
    "@typescript-eslint/no-explicit-any": "warn"
  }
});

Flat Config Composer

The FlatConfigComposer provides a fluent interface for building and composing ESLint configurations.

interface FlatConfigComposer {
  /**
   * Append additional configurations to the composer
   */
  append(...configs: ResolvableFlatConfig[]): FlatConfigComposer;
  
  /**
   * Set plugin conflicts error handling
   */
  setPluginConflictsError(pluginName?: string, message?: string): FlatConfigComposer;
}

Usage Examples:

import { defineFlatConfigs } from "@nuxt/eslint-config";

// Building configurations step by step
const config = defineFlatConfigs()
  .append({
    name: "base-rules",
    rules: {
      "no-unused-vars": "warn"
    }
  })
  .append({
    name: "typescript-rules",
    files: ["**/*.ts", "**/*.tsx"],
    rules: {
      "@typescript-eslint/explicit-function-return-type": "error"
    }
  })
  .setPluginConflictsError("import", "Different import plugin instances detected");

export default config;

Resolvable Flat Config Type

Type definition for configurations that can be synchronous or asynchronous.

/**
 * A flat config that can be a direct config object or a promise that resolves to one
 */
type ResolvableFlatConfig = Linter.Config | Promise<Linter.Config>;

/**
 * ESLint Linter.Config for reference
 */
interface Linter.Config {
  name?: string;
  files?: string | string[];
  ignores?: string[];
  languageOptions?: LanguageOptions;
  linterOptions?: LinterOptions;
  processor?: string | Processor;
  plugins?: Record<string, Plugin>;
  rules?: Record<string, RuleLevel | RuleLevelAndOptions>;
  settings?: Record<string, any>;
}

Usage Examples:

import { defineFlatConfigs } from "@nuxt/eslint-config";

// Mix of sync and async configs
export default defineFlatConfigs(
  // Synchronous config
  {
    name: "sync-config",
    rules: {
      "no-console": "warn"
    }
  },
  
  // Asynchronous config - will be resolved automatically
  import("./async-config.js").then(module => ({
    name: "async-config",
    ...module.default
  })),
  
  // Conditional async config
  process.env.ENABLE_TYPESCRIPT ? 
    import("@typescript-eslint/eslint-plugin").then(plugin => ({
      name: "typescript",
      plugins: {
        "@typescript-eslint": plugin
      }
    })) : 
    undefined
);

Integration with External Tools

Working with other ESLint configuration tools and plugins.

import { defineFlatConfigs } from "@nuxt/eslint-config";
import { composer } from "eslint-flat-config-utils";
import gitignore from "eslint-config-flat-gitignore";

// Integration with eslint-flat-config-utils
export default defineFlatConfigs(
  gitignore({ strict: false }),
  
  // Use the composer directly if needed
  ...composer(
    {
      name: "base",
      rules: { "no-console": "warn" }
    },
    {
      name: "typescript",
      files: ["**/*.ts"],
      rules: { "@typescript-eslint/no-explicit-any": "error" }
    }
  )
);

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