apps/docs/content/blog/turbo-1-12-0.mdx
import { Authors } from "@/components/blog/authors"; import { Date } from "@/components/blog/date"; import { ThemeAwareImage } from "@/components/geistdocs/theme-aware-image"; import ColorsInLogsLight from "../../public/images/blog/turbo-1-12-0/log-colors-light.png"; import ColorsInLogsDark from "../../public/images/blog/turbo-1-12-0/log-colors-dark.png"; import ErrorsOverhaulLight from "../../public/images/blog/turbo-1-12-0/light-errors-overhaul.png"; import ErrorsOverhaulDark from "../../public/images/blog/turbo-1-12-0/errors-overhaul-dark.png";
<Date>Tuesday, January 30th, 2024</Date>
<Authors authors={["mehulkar", "tomknickman", "gregsoltis"]} />
Turborepo 1.12 adds popular community-requested features and feedback improvements, including:
inputs ergonomics: Use Turborepo's defaults with your input customizationsWe'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.
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.
<ThemeAwareImage
className="my-4 flex justify-center"
light={{
alt: "A screenshot of a terminal running a turbo task with colors from the underlying shell logs.",
src: ColorsInLogsLight,
props: {
width: 625,
height: 1000,
className: "dark:hidden block rounded-xl",
},
}}
dark={{
alt: "A screenshot of a terminal running a turbo task with colors from the underlying shell logs.",
src: ColorsInLogsDark,
props: {
width: 625,
height: 1000,
className: "hidden dark:block rounded-xl",
},
}}
/>
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.
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.
<ThemeAwareImage
className="my-4 flex justify-center"
light={{
alt: "A screenshot of a terminal attempting to run a turbo task but receiving an informative error that an unknown key output, was found in the turbo.json file.",
src: ErrorsOverhaulLight,
props: {
width: 682,
height: 746.5,
className: "dark:hidden block rounded-xl",
},
}}
dark={{
alt: "A screenshot of a terminal attempting to run a turbo task but receiving an informative error that an unknown key output, was found in the turbo.json file.",
src: ErrorsOverhaulDark,
props: {
width: 682,
height: 746.5,
className: "hidden dark:block rounded-xl",
},
}}
/>
In this enhanced UI, we are:
inputs ergonomicsTurborepo 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.
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, speak to us in GitHub Discussions, and chat with the community in Discord, 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 turborepo.dev/docs/telemetry.
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=1DO_NOT_TRACK=1 (per the Console Do Not Track (DNT) specification)$TURBO_DEFAULT$ in inputs (PR)Since releasing Turborepo 1.11 we've seen incredible adoption and community growth:
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.