CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-eslint-config-turbo

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

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

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.

Install with Tessl CLI

npx tessl i tessl/npm-eslint-config-turbo
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/eslint-config-turbo@2.5.x
Publish Source
CLI
Badge
tessl/npm-eslint-config-turbo badge