Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
CliExecution
✓ import { execa } from 'execa'; await execa('turbo', ['run', 'build'], { cwd: 'your-monorepo' });
✗ import { runTurbo } from 'turbo-darwin-64';
This package is a native binary. Direct programmatic interaction from JavaScript typically involves spawning a child process to execute the 'turbo' CLI, commonly using libraries like `execa`.
BinaryPathResolution
✓ import { join } from 'node:path'; const turboBinaryPath = join(require.resolve('turbo-darwin-64'), '..', 'bin', 'turbo'); console.log(`Turbo binary located at: ${turboBinaryPath}`);
✗ import { getBinaryPath } from 'turbo-darwin-64';
While this package provides the 'turbo' executable, it does not expose JavaScript modules for direct import. Its installation path can be resolved programmatically to find the native binary.
NoDirectJSModules
✓ // This package does not export JavaScript modules for direct import.
✗ import * as turboLib from 'turbo-darwin-64';
As a native binary distribution, `turbo-darwin-64` is designed to be executed via the command line ('turbo' command) and does not offer any conventional JavaScript or TypeScript exports for programmatic use.
Demonstrates how to programmatically invoke the `turbo` CLI to run a build task within a minimal Turborepo project structure, simulating a typical development workflow.
import { execa } from 'execa'; // Recommended for programmatic CLI interaction
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
import { join } from 'node:path';
// 1. Initialize a new Turborepo project (usually done via npx create-turbo)
console.log("Setting up a dummy Turborepo project structure...");
const projectRoot = './my-turbo-app';
if (!existsSync(projectRoot)) {
mkdirSync(projectRoot);
mkdirSync(join(projectRoot, 'apps'));
mkdirSync(join(projectRoot, 'packages'));
}
writeFileSync(join(projectRoot, 'package.json'), JSON.stringify({
name: 'my-turbo-app',
version: '1.0.0',
private: true,
workspaces: ['apps/*', 'packages/*'],
scripts: {
"build": "turbo run build"
}
}, null, 2));
writeFileSync(join(projectRoot, 'turbo.json'), JSON.stringify({
"$schema": "https://turbo.build/schema.json",
"pipeline": {
"build": {
"outputs": ["dist/**"]
}
}
}, null, 2));
writeFileSync(join(projectRoot, 'apps', 'web', 'package.json'), JSON.stringify({
name: 'web',
version: '1.0.0',
scripts: { "build": "echo 'Building web app...' && mkdir -p dist && echo 'web output' > dist/index.txt" }
}, null, 2));
// 2. Demonstrate running a 'turbo' command
async function runTurboBuild() {
console.log("\nRunning 'turbo run build' in the dummy project...");
try {
// Ensure 'turbo' is in PATH or use npx/path to binary directly
const { stdout, stderr } = await execa('turbo', ['run', 'build'], { cwd: projectRoot });
console.log('stdout:', stdout);
if (stderr) console.error('stderr:', stderr);
console.log("\n'turbo run build' completed successfully.");
console.log("Check the 'dist' directory in 'apps/web' for build output.");
} catch (error: any) {
console.error(`Error running turbo: ${error.message}`);
if (error.stderr) console.error('Turbo stderr:', error.stderr);
process.exit(1);
}
}
runTurboBuild();
turbo --version
Debug
Known issues
breakingThe authentication flow for Vercel remote caching and deployment has been updated to use standard OAuth/device flows. This change may require users to re-authenticate or adjust CI/CD configurations.fixFollow the new authentication prompts when connecting to Vercel, and update any automated scripts using legacy authentication methods.
affects: >=2.9.7-canary.11
gotchaUsers leveraging pnpm v11 might encounter issues with multi-document lockfiles if using older versions of Turborepo. An explicit fix was released to support this pnpm version.fixUpgrade Turborepo to version `2.9.7-canary.7` or newer to ensure compatibility with pnpm v11 multi-document lockfiles.
affects: <2.9.7-canary.7
gotchaPrevious versions of Turborepo had issues with graceful shutdown semantics, potentially leading to zombie processes or incorrect exit codes during `SIGINT` (Ctrl+C) handling or PTY interactions. This was addressed in recent canary releases.fixUpgrade Turborepo to at least `2.9.7-canary.10` to ensure proper graceful shutdown behavior, especially in interactive or CI environments.
affects: <2.9.7-canary.10
Errors
Common errors & fixes
command not found: turbo
The `turbo` executable is not found in the system's PATH, or the `turborepo` package (which installs the binary) is not correctly installed or linked.
fixEnsure `turborepo` is installed as a dependency in your project (`npm install turborepo` or `pnpm add turborepo` or `yarn add turborepo`) or globally (`npm install -g turborepo`). If using `npx`, ensure the version is correctly specified (`npx turbo@latest`). For programmatic calls, verify `execa` or similar tools are correctly configured to locate binaries.
Error: Failed to parse turbo.json
The `turbo.json` configuration file is either malformed, contains invalid JSON, or is missing required `pipeline` definitions for tasks.
fixReview your `turbo.json` file for syntax errors and ensure it defines pipelines for the tasks you are trying to run (e.g., 'build', 'test', 'lint'). Refer to the official Turborepo documentation for the correct schema and examples.
Audit
Dependencies
turboreporequiredThis package provides the native executable consumed by the main `turborepo` CLI tool. It is typically installed as a transitive dependency.