{"id":19601,"library":"eslint-config-turbo","title":"eslint-config-turbo","description":"Official ESLint configuration for monorepos built with Turborepo (v2.9.6, stable). Distributed as an eslint-config package, it enforces Turborepo best practices including disallowing `process.env` usage in shared configs and ensuring proper task dependencies. Ships TypeScript declarations. Integrates with Turborepo's remote caching and task orchestration. Active maintenance by Vercel with weekly releases. Recommended alternative to manual ESLint setup for Turborepo projects.","status":"active","version":"2.9.6","language":"javascript","source_language":"en","source_url":"https://github.com/vercel/turborepo","tags":["javascript","eslint","eslint-config","eslintconfig","turbo","turborepo","typescript"],"install":[{"cmd":"npm install eslint-config-turbo","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-turbo","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-turbo","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required for ESLint functionality","package":"eslint","optional":false},{"reason":"peer dependency; ensures config aligns with Turborepo version","package":"turbo","optional":false}],"imports":[{"note":"Use the shorthand 'turbo' in extends; the full package name is not needed.","wrong":"module.exports = { extends: ['eslint-config-turbo'] }","symbol":"default","correct":"module.exports = { extends: ['turbo'] }"},{"note":"If using ESM with a config file that supports imports, you can import the config directly.","symbol":"turbo","correct":"import turbo from 'eslint-config-turbo'"},{"note":"eslint-config-turbo does not export TypeScript types; use @types/eslint or eslint's own types.","wrong":"import type { Config } from 'eslint-config-turbo'","symbol":"types","correct":"import type { Linter } from 'eslint' // config types come from eslint, not turbo"}],"quickstart":{"code":"// .eslintrc.js\nmodule.exports = {\n  extends: ['turbo'],\n  rules: {\n    // Customize rules as needed\n  }\n};\n\n// package.json\n{\n  \"eslintConfig\": {\n    \"extends\": [\"turbo\"]\n  }\n}","lang":"javascript","description":"Shows how to extend eslint-config-turbo in an ESLint config file or package.json. The minimal setup requires only 'turbo' in extends."},"warnings":[{"fix":"Change extends to ['turbo']","message":"Using full package name 'eslint-config-turbo' in extends does not work; must use shorthand 'turbo'","severity":"gotcha","affected_versions":"<1.0"},{"fix":"Replace 'turbo/no-undeclared-env-vars' with 'no-process-env'","message":"The rule 'turbo/no-undeclared-env-vars' was removed in v1.8; use 'no-process-env' instead","severity":"deprecated","affected_versions":"<1.8"},{"fix":"Update eslint and turbo versions","message":"Version 2.0 requires peer dependency eslint >=8.0.0 and turbo >=1.10.0","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use default import or require()","message":"Config is not exported as a named export; default export only","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run: `npm install --save-dev eslint-config-turbo eslint turbo`","cause":"eslint-config-turbo is not installed or not in node_modules.","error":"ESLint couldn't find the config \"turbo\" after extending from \"turbo\"."},{"fix":"Remove the rule or replace with 'no-process-env'","cause":"The rule has been removed or renamed.","error":"Configuration for rule \"turbo/no-undeclared-env-vars\" is invalid."},{"fix":"Install the package or use extends: ['turbo']","cause":"When using require() in eslint config, the package may not be installed or the path is wrong.","error":"Cannot find module 'eslint-config-turbo'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}