Blog

Introducing Frunk

Sep 18, 2025

Frunk shipped last week to make npm scripts feel modern again. It is a fast, lightweight runner that cracks open your package.json scripts, runs what needs to run in parallel, and keeps the output readable even when everything fires at once.

frunk [lint,typecheck]->[test:*]

Why we built it

Our projects lean heavily on npm scripts for day-to-day workflows. Existing runners either forced everything into a linear queue or dumped a wall of logs once you turned on parallelism. Frunk keeps the convenience of script orchestration while understanding dependencies, deduping shared setup tasks, and finishing groups before cascading to the next sequence.

Highlights

  • Parallel by default, with -> chains for the few moments you need ordering
  • Pattern matching for script groups like build:*, *:dev, and !test:e2e
  • Dependency graph awareness so shared scripts only execute once per run
  • Clean prefixes and aligned output that make long-running tasks easy to follow

Get started

Install it as a dev dependency and start replacing nested scripts with a single call:

pnpm add -D frunk
{
  "scripts": {
    "dev": "frunk [*:dev]",
    "test": "frunk [lint,typecheck]->[test:*]"
  }
}

We are already using Frunk in our own repos and would love feedback. Open an issue, send a PR, or just npm run dev and watch it go.

Links