DEV Community

Folke Lemaitre
Folke Lemaitre

Posted on

๐Ÿš€ Just released ultra-runner 2.0.0! Ultra fast script runner and build tool, with support for lerna, yarn and pnpm monorepos.

I've just released Ultra Runner 2.0.0 with lots of new features to run scripts and builds for monorepos.

โœจ Highlights

  • zero-config: works out of the box with your existing monorepo
  • non-intrusive: no need to make any changes to your packages.json files
  • workspaces: detects packages in existing lerna, yarn and pnpm workspaces, or recusrively searches them
  • ultra fast builds: ultra keeps track of file changes in your repo and only actually build a package when needed
  • parallel builds: ultra builds your packages concurrently by default
  • workspace dependencies: workspace dependencies are automatically resolved and used for parallel builds
  • execute anything: one command to run package scripts, node_modules binaries or system binaries, recursively in your repository.
  • faster script execution: ultra hijacks any npm, pnpm, yarn and npx calls for faster execution.
  • concurrency within scripts: you can add optional configuration to package.json to run parts of a script in parallel. No need to change the actual scripts
  • filtering: filter on package names or subdirectories

Top comments (10)

Collapse
 
tunnckocore profile image
Charlike Mike Reagent

Oh, and might be interested in glob-cache for detecting changes. It's built on fast-glob (by default) but can pass other glob library too. And @hela/eslint which is insanely faster than ESLint, using the Linter API.

Good job anyway, seems small :)

Collapse
 
folke profile image
Folke Lemaitre

nice! Will definitely have a look!

Collapse
 
santypk4 profile image
Sam

What does it make it so fast ?

Collapse
 
sirseanofloxley profile image
Sean Allin Newell

Ultra looks like it does a few clever things, but the crux is:

  • parallel everything it can
  • create a runtime context stripped of excess (it hijacks npx/npm run/yarn run/shell operators (&&/||) to minimize overhead)
  • parse package.json scripts ahead of time, to analyze best execution plan
Collapse
 
folke profile image
Folke Lemaitre

Thanks for jumping in here :)

It does indeed all of the above and has some special handling for running build scripts. It keeps track of file changes accross your reporistory and will only actually build a package when really needed.

Collapse
 
sirseanofloxley profile image
Sean Allin Newell

This is really cool!

Collapse
 
folke profile image
Folke Lemaitre

Thanks!!

Collapse
 
tunnckocore profile image
Charlike Mike Reagent • Edited

Heck. Exactly what I'm doing with the Hela ecosystem (plus the many Jest runners in tunnckoCore/opensource) in past 2 years.

Sounds great, I'll look over the code.

Collapse
 
tunnckocore profile image
Charlike Mike Reagent

Seems like 2020 will be competitive year - Hela, Ultra, and Rome by Facebook.

Collapse
 
rawkiesthinker profile image
rawkiesthinker

From a quick glance, it seems like it could help me build a whole micro front end, want to use multiple different frameworks and compile into one routing framework.

Let me know if it could