loading...

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

folke profile image Folke Lemaitre ・1 min read

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

Posted on by:

folke profile

Folke Lemaitre

@folke

Never stop exploringπŸƒ πŸ„ πŸ§˜β€β™‚οΈ πŸ‘¨β€πŸ’» 🌴 🌊 ⛰️ β˜€οΈ

Discussion

markdown guide
 

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 :)

 

nice! Will definitely have a look!

 

What does it make it so fast ?

 

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
 

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.

 
 

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.

 

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

 

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