Live data from Hacker News

Turborepo 1.2: High-performance build system for monorepos

turborepo.org

21–30 of 55 posts

Re: Turborepo 1.2: High-performance build system for monorepos

#21

Well done and congrats to the Turborepo team on the launch as well as the Vercel merger, which I think is a great thing for the JS ecosystem! We now have a healthy competition between several JS domain-specific build tools bit.dev, Nx, Turborepo, and Rush. This is in addition to plugins to general purpose monorepo tooling like rules_nodejs (Bazel). I'm looking forward to the seeing the new ideas that come out from th…

> There are a huge number of mostly non-JS-specific problems that monorepo tooling eventually needs to solve: distributed build artifact and test result caching, distributed action execution, sandboxing, resource management and queuing, observability, and integration with other CI tools to name a few. Turborepo author/founder here.... I agree. I built Turborepo because existing tools weren’t meeting our needs. To sol…

Is it possible to integrate Turborepo with general-purpose monorepo build tools? Bazel, in particular?

(Is Bazel designed in a way that make it impossible to do JS monorepos well?)

Re: Turborepo 1.2: High-performance build system for monorepos

#22
post #19

Earlier quoted context omitted.

>I'm sad JS needs a build step. The best build system is none at all IMHO. Good news: JS doesn't need a build step. Modern webdev wants a build step mostly because it wants Javascript to feel more like a "serious" language. There are technical benefits to compiling to Javascript, most of which can be served by other means, but the unnecessary complexity of the Javascript ecosystem is mostly about gatekeeping and aest…

I'm with you in that a lot of TS use seems dogmatic or ritualistic today. I have a strong feeling in the near future we're going to see the bow string snap back and simple zero build, basic dynamic use of pure JS comes back in vogue.

It seems to be coming back as 'vanilla JS' so maybe there's hope.

Re: Turborepo 1.2: High-performance build system for monorepos

#23

Well done and congrats to the Turborepo team on the launch as well as the Vercel merger, which I think is a great thing for the JS ecosystem! We now have a healthy competition between several JS domain-specific build tools bit.dev, Nx, Turborepo, and Rush. This is in addition to plugins to general purpose monorepo tooling like rules_nodejs (Bazel). I'm looking forward to the seeing the new ideas that come out from th…

I'm sad JS needs a build step. The best build system is none at all IMHO. I'd love to see native support everywhere for typescript or other things we typically depend on a build for today.

> I'd love to see native support everywhere for typescript

This (controversial) feature is currently at stage 1 in TC39.

Re: Turborepo 1.2: High-performance build system for monorepos

#24
Turborepo has been a welcome addition to the JavaScript tooling sphere.

Funnily enough, at nearly the same time as the initial version of Turbo became available, I had just about finished building my own monorepo tool for similar reasons (contemporary tools' inadequacies, etc). Haven't had a reason to switch personally, but I'm glad there are finally fast, small tools with good defaults (and minimal required configuration if any).

Re: Turborepo 1.2: High-performance build system for monorepos

#25

Earlier quoted context omitted.

> There are a huge number of mostly non-JS-specific problems that monorepo tooling eventually needs to solve: distributed build artifact and test result caching, distributed action execution, sandboxing, resource management and queuing, observability, and integration with other CI tools to name a few. Turborepo author/founder here.... I agree. I built Turborepo because existing tools weren’t meeting our needs. To sol…

Is it possible to integrate Turborepo with general-purpose monorepo build tools? Bazel, in particular? (Is Bazel designed in a way that make it impossible to do JS monorepos well?)

Turborepo author/founder here....

Yes, it's possible. Databricks currently uses both Turborepo and Bazel together in their monorepo[1]

[1] https://twitter.com/elado/status/1504216742393876483?s=20&t=...

Re: Turborepo 1.2: High-performance build system for monorepos

#26

Earlier quoted context omitted.

> There are a huge number of mostly non-JS-specific problems that monorepo tooling eventually needs to solve: distributed build artifact and test result caching, distributed action execution, sandboxing, resource management and queuing, observability, and integration with other CI tools to name a few. Turborepo author/founder here.... I agree. I built Turborepo because existing tools weren’t meeting our needs. To sol…

Is it possible to integrate Turborepo with general-purpose monorepo build tools? Bazel, in particular? (Is Bazel designed in a way that make it impossible to do JS monorepos well?)

> Is Bazel designed in a way that make it impossible to do JS monorepos well?

Not impossible, but you really need to go all in with it and follow its conventions and practices. See this for the main docs: https://github.com/bazelbuild/rules_nodejs

One thing in particular that doesn't work well in the bazel world is doing your own stuff outside its BUILD.bazel files. If you're used to just npm install and jam some code in your package.json scripts... that doesn't usually work in the bazel world. If you have a lot of logic or tools in your build you'll likely need to go all in and make bazel starlark rules or macros that recreate that logic. Nothing is impossible, but expect to spend time getting up to speed and getting things working the bazel way.

Re: Turborepo 1.2: High-performance build system for monorepos

#27
post #12

I'm working with some fairly large monorepos and compile times. To be completely honest, JS is the least of our concerns when it comes to build time, things are pretty snappy when compared to other code bases like C, and Java even with tools like Bazel.

While we're initially focused on JavaScript and TypeScript codebases, you can already use Turborepo with any language as long as you define tasks through `package.json` scripts and use npm/pnpm/yarn workspaces. Turborepo is written in Go and uses `turbo` to build `turbo` in its own monorepo[1]. We're discussing more native support for other languages. It would likely be a commitment to a small subset of popular langu…

This was my hunch, but it'd be awesome to make that a little more clear on the homepage! Especially if you can link to an FAQ with more detail on the tradeoffs.

When considering adopting a tool like this vs something more general-purpose like Bazel, I'd like to have a rough idea of how screwed I'll be when some non-JS/TS code gets added in the future.

Re: Turborepo 1.2: High-performance build system for monorepos

#28
post #3

> Turborepo is a high-performance build system for JavaScript and TypeScript codebases. > Vercel, the well-funded front-end development platform from the team behind Next.js, today announced that it has acquired Turborepo, a high-performance build system for JavaScript and TypeScript monorepos, an increasingly popular way for organizing source code into a single repository that includes all of the necessary packages…

What does it mean that Vercel has "acquired" Turborepo?

Isn't Turborepo open source? How do you acquire open-source?

Re: Turborepo 1.2: High-performance build system for monorepos

#29

Well done and congrats to the Turborepo team on the launch as well as the Vercel merger, which I think is a great thing for the JS ecosystem! We now have a healthy competition between several JS domain-specific build tools bit.dev, Nx, Turborepo, and Rush. This is in addition to plugins to general purpose monorepo tooling like rules_nodejs (Bazel). I'm looking forward to the seeing the new ideas that come out from th…

> However, I feel a bit sad at the state of general purpose build tools (Bazel/Pants/Buck, make, GitHub Actions, Maven, Nix) or cloud-based IDEs (Cloud9, Codespaces). These tools come off as too complex to operate and build on top of...

I definitely agree, although I've found Please (please.build) to potentially be a solution in this area. It is a lot simpler, smaller, and more modern than Buck and Bazel, but shares similar properties as to be familiar (I.e. the buildfile syntax). I think it is supposed to be easier to extend with other languages, but I haven't tries that myself.

Re: Turborepo 1.2: High-performance build system for monorepos

#30
post #3

> Turborepo is a high-performance build system for JavaScript and TypeScript codebases. > Vercel, the well-funded front-end development platform from the team behind Next.js, today announced that it has acquired Turborepo, a high-performance build system for JavaScript and TypeScript monorepos, an increasingly popular way for organizing source code into a single repository that includes all of the necessary packages…

What does it mean that Vercel has "acquired" Turborepo? Isn't Turborepo open source? How do you acquire open-source?

>How do you acquire open-source?

You buy the company that develops it (or the main fork at least) and provides support for it.

Post reply on HN