ESLint configuration for Turborepo monorepo projects with pre-configured rules and flat config support
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
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.
npm install eslint-config-turbo --save-dev// In .eslintrc.js or similar
{
"extends": ["turbo"]
}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
];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]+$"]
}
]
}
}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]+$"],
},
],
},
},
];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:
plugin:turbo/recommended which provides Turborepo-specific linting rulesProvides 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-turboturbo/no-undeclared-env-vars rule set to "error" levelLinter.FlatConfig interface/**
* 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
}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