Turborepo 1.12
Turborepo 1.12 adds popular community-requested features and feedback improvements, including:
- Colors in task logs: Colors from original shell logs used by default
- Errors overhaul: Improved error messages for misconfigurations
- Improved
inputs
ergonomics: Use Turborepo's defaults with your input customizations - Telemetry: Help us focus on what matters most to Turborepo users
We're also done cleaning up our migration to Rust in this release by removing the --go-fallback
flag and shrinking the turbo
binary by 58% compared to 1.11.
Update today by running npx @turbo/codemod migrate
or get started with npx create-turbo@latest
.
Colors in task logs
Color is a great way to quickly surface important information in user interfaces. It's common for developer tooling to highlight success in green, warnings in yellow, or errors in red.
In this release, we're now showing the colors from your underlying tasks in your local environment by default. This has been a popular request from the community and we're excited to ship support for macOS and Linux today. We will be following up with Windows support in a future release.
Errors overhaul
An important part of developer experience is ensuring that, when things go wrong, it's clear how to get back to the happy path. In this release, we've improved the error messages that come from Turborepo misconfigurations.
In this enhanced UI, we are:
- Showing you the errorful code
- Improving the help text in your terminal for each type of error
- Providing a link to documentation when it can provide you with useful context
Improved inputs
ergonomics
Turborepo intelligently understands the inputs to your tasks by default. But there are also situations where you may want to include or exclude specific files or directories from your task inputs.
Importantly, using the inputs
key on a task opts you out of all of the default inputs for a task, like omitting gitignored files from your inputs. Until today, you had to manually bring back these defaults by creating glob patterns for them yourself.
Today, we're adding $TURBO_DEFAULT$
as a special value when used in the inputs
array.
{
"pipeline": {
"build": {
"inputs": ["$TURBO_DEFAULT$", "!README.md", "!**.test.**"]
}
}
}
This microsyntax allows you to use the Turborepo defaults you're used to while adding in your own custom globs to fine tune the default input behavior.
Check out the inputs
documentation for more information.
Telemetry
Turborepo was released almost two years ago, and turbo
has developed considerably over the past two years. As the community has grown, the value of your feedback is immeasurable in helping us stay focused on what matters most to Turborepo users.
Until now, our feedback gathering process has been manual, slow, and error prone. While we will always highly appreciate users who file GitHub Issues (opens in a new tab), speak to us in GitHub Discussions (opens in a new tab), and chat with the community in Discord (opens in a new tab), this feedback only captures the sentiment of a small corner of the Turboverse.
Today, we're introducing a completely anonymous, automated approach to feedback to learn more about the ways that the community is using Turborepo. As we continue to iterate on turbo
, this information will help us ensure performance, confirm stability, design new features, and drive the project's direction.
We're creating the build system of the future and this information will be highly valuable to guide us in that effort. For more information, visit turbo.build/repo/docs/telemetry (opens in a new tab).
If you'd like to opt out of telemetry, run:
turbo telemetry disable
You may also opt-out by setting an environment variable:
TURBO_TELEMETRY_DISABLED=1
DO_NOT_TRACK=1
(per the Console Do Not Track (DNT) (opens in a new tab) specification)
Other Improvements
- [Feature]: Enable pty usage (PR) (opens in a new tab)
- [Feature]: Support
$TURBO_DEFAULT$
in inputs (PR) (opens in a new tab) - [Feature]: Support Yarn 4 patches (PR) (opens in a new tab)
- [Feature]: Enable telemetry (PR) (opens in a new tab)
- [Improvement]: Treat empty environment variables as unset (PR) (opens in a new tab)
- [Improvement]: Error out if dependent flags are provided without their parent (PR) (opens in a new tab)
- [Improvement]: Make sure that our concurrency check ignore packages without tasks (PR) (opens in a new tab)
- [Improvement]: Avoid panic on invalid directory filters (PR) (opens in a new tab)
- [Improvement]: Ignore permission errors during globbing (PR) (opens in a new tab)
- [Improvement]: Avoid retry panic (PR) (opens in a new tab)
- [Improvement]: Rewrite prefix after carriage return (PR) (opens in a new tab)
- [Improvement]: Validate graph extension (PR) (opens in a new tab)
- [Improvement]: Truncate metadata file when writing (PR) (opens in a new tab)
- [Improvement]: Correctly create symlinks to directories (PR) (opens in a new tab)
- [Improvement]: Make sure cookie dir exists before writing cookie (PR) (opens in a new tab)
- [Improvement]: Examples turbo.json outputs key (PR) (opens in a new tab)
- [Improvement]: Filter package.json files that are subfolders of other packages (PR) (opens in a new tab)
- [Improvement]: Sort dependents and dependencies during normalization (PR) (opens in a new tab)
- [Improvement]: Swap fallback logs to debug (PR) (opens in a new tab)
- [Improvement]: Include gitignored files in fallback (PR) (opens in a new tab)
- [Improvement]: Include default files in fallback (PR) (opens in a new tab)
Community
Since releasing Turborepo 1.11 we've seen incredible adoption and community growth:
- 24.0k+ GitHub Stars (opens in a new tab)
- 1.9M+ weekly NPM downloads (opens in a new tab)
- 238 years of compute time saved using Vercel Remote Cache (opens in a new tab)
Turborepo is the result of the combined work of all of its contributors, including our core team.
Thank you for your continued support, feedback, and collaboration to make Turborepo your build tool of choice.