or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.md
tile.json

tessl/npm-eslint-config-turbo

ESLint configuration for Turborepo monorepo projects with pre-configured rules and flat config support

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/eslint-config-turbo@2.5.x

To install, run

npx @tessl/cli install tessl/npm-eslint-config-turbo@2.5.0

index.mddocs/

ESLint Config Turbo

ESLint Config Turbo provides a pre-configured ESLint configuration specifically designed for Turborepo monorepo projects. It extends the eslint-plugin-turbo plugin with recommended settings and includes both legacy (.eslintrc) and modern flat config (eslint.config.js) support.

Package Information

  • Package Name: eslint-config-turbo
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install eslint-config-turbo --save-dev

Core Imports

Legacy Configuration Import

// In .eslintrc.js or similar
{
  "extends": ["turbo"]
}

Flat Configuration Import

import turboConfig from "eslint-config-turbo/flat";

export default [
  ...turboConfig,
  // Other configuration
];

For CommonJS flat config:

const turboConfig = require("eslint-config-turbo/flat");

module.exports = [
  ...turboConfig,
  // Other configuration
];

Basic Usage

Legacy Configuration (.eslintrc)

Add turbo to the extends section of your ESLint configuration:

{
  "extends": ["turbo"]
}

You can also configure the turbo rules:

{
  "plugins": ["turbo"],
  "rules": {
    "turbo/no-undeclared-env-vars": [
      "error",
      {
        "allowList": ["^ENV_[A-Z]+$"]
      }
    ]
  }
}

Flat Configuration (eslint.config.js)

Import and spread the turbo configuration:

import turboConfig from "eslint-config-turbo/flat";

export default [
  ...turboConfig,
  // Other configuration
  {
    rules: {
      "turbo/no-undeclared-env-vars": [
        "error",
        {
          allowList: ["^ENV_[A-Z]+$"],
        },
      ],
    },
  },
];

Capabilities

Legacy ESLint Configuration

Provides a legacy ESLint configuration object compatible with .eslintrc files and older ESLint setups.

/**
 * Legacy ESLint configuration object that extends plugin:turbo/recommended
 * Exported as CommonJS module.exports for compatibility with .eslintrc files
 */
const config = {
  extends: ["plugin:turbo/recommended"]
};

module.exports = config;

The configuration automatically includes:

  • Extension of plugin:turbo/recommended which provides Turborepo-specific linting rules
  • Pre-configured rules for monorepo environment variable management

Flat ESLint Configuration

Provides an ESLint flat configuration array compatible with modern ESLint (v8.21.0+) flat config format.

import type { Linter } from "eslint";
import plugin from "eslint-plugin-turbo";

/**
 * Flat ESLint configuration array for modern ESLint setups
 * Exports a pre-configured array of ESLint flat config objects
 */
export default [
  {
    plugins: {
      turbo: plugin,
    },
    rules: {
      "turbo/no-undeclared-env-vars": "error",
    },
  },
] satisfies Array<Linter.FlatConfig>;

The flat configuration includes:

  • turbo plugin registration from eslint-plugin-turbo
  • turbo/no-undeclared-env-vars rule set to "error" level
  • Type safety with Linter.FlatConfig interface

Types

Linter Types (from ESLint)

/**
 * ESLint Linter configuration interface for flat config
 * Imported from eslint package - contains configuration for plugins, rules, and other ESLint settings
 */
interface Linter.FlatConfig {
  plugins?: Record<string, ESLint.Plugin>;
  rules?: Record<string, any>;
  settings?: Record<string, any>;
  languageOptions?: {
    ecmaVersion?: number;
    sourceType?: "script" | "module";
    globals?: Record<string, boolean>;
    parser?: any;
    parserOptions?: any;
  };
  files?: string[];
  ignores?: string[];
  // Additional ESLint flat config properties
}

Dependencies

Runtime Dependencies

  • eslint-plugin-turbo: Provides the underlying Turbo ESLint rules and plugin functionality

Peer Dependencies

  • eslint: >6.6.0 (required for ESLint functionality)
  • turbo: >2.0.0 (required for Turborepo integration and environment variable detection)

Rules Configuration

turbo/no-undeclared-env-vars

The primary rule enforced by this configuration prevents usage of undeclared environment variables in Turborepo contexts.

Default Configuration: "error"

Options: The rule accepts an options object with an allowList property for pattern-based exceptions:

interface NoUndeclaredEnvVarsOptions {
  allowList?: string[]; // Array of regex patterns for allowed environment variables
}

Usage Examples:

// Allow environment variables matching specific patterns
{
  "turbo/no-undeclared-env-vars": [
    "error",
    {
      "allowList": ["^ENV_[A-Z]+$", "^NEXT_PUBLIC_"]
    }
  ]
}

This rule ensures that all environment variables used in your Turborepo project are properly declared in the turbo.json configuration, helping maintain consistency across your monorepo.