npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

runner-run

v0.12.1

Published

Universal project task runner. Auto-detects toolchain, provides unified CLI.

Readme

runner-run

runner is for people who bounce between codebases and refuse to memorize each repo's private little task-running religion.

Install it from npm, then stop guessing:

npm install -g runner-run
run <TAB>
runner install --frozen test build

Instead of remembering whether this project wants npm run, pnpm exec, bunx, cargo, uv run, deno task, make, just, go-task, or a monorepo wrapper, use the same shape everywhere.

What You Get

runner-run puts two commands on your PATH:

| command | use it for | | -------- | ----------------------------------------------------- | | runner | Full CLI: detect, install, clean, list, completions. | | run | Short task-first alias: run test, run build, etc. |

runner is the grown-up command. run is the muscle memory command.

Install

npm install -g runner-run

Other package managers work too:

pnpm add -g runner-run
yarn global add runner-run
bun add -g runner-run

Or pin it per project for CI/dev shells:

npm install --save-dev runner-run

Use It

runner                              # show detected project info
runner <task> [-- <args...>]        # run a task
runner run <target> [-- <args...>]  # run a task or command
run <target> [-- <args...>]         # alias for `runner run`

runner install [--frozen]           # install dependencies
runner clean [-y] [--include-framework]
runner list [--raw] [--json]        # list available tasks
runner doctor [--json]              # show resolver signals
runner why <task> [--json]          # explain how dispatch works
runner completions [<shell>] [-o <path>]

runner run <target> looks for a project task first. If no task exists, it falls back to an exec-style command through the detected toolchain when that ecosystem supports one.

The run binary always means "task or command". So:

run clean
run install

runs a task or command named clean or install, even though those are also runner built-ins.

Completions

Completions are the main trick. Let the shell ask runner what exists right now in the current project:

eval "$(runner completions)"
run <TAB>

Explicit shell forms:

eval "$(runner completions bash)"
eval "$(runner completions zsh)"
eval "$(runner completions fish)"

PowerShell:

runner completions powershell | Out-String | Invoke-Expression

No per-project command archaeology. No guessing which wrapper this repo invented in 2021.

Man Pages

Unix-like npm installs include man pages:

man runner
man run
man runner-list

They are generated from the CLI definition at release time and shipped in the npm package. Nothing gets generated during install.

What Runner Understands

Package managers and ecosystems:

npm, yarn, pnpm, bun, cargo, deno, uv, poetry, pipenv, go, bundler, composer

Task sources:

package.json / package.json5 / package.yaml
turbo.json / turbo.jsonc
deno.json / deno.jsonc
Makefile
justfile
Taskfile
bacon.toml
mise.toml / .mise.toml
Cargo aliases from .cargo/config.toml

Workspace context:

turbo, nx, pnpm, npm/yarn workspaces, Cargo workspaces

The npm Package Bit

This package is a tiny shim plus platform packages. It does not build Rust on your machine and it does not fetch binaries in a postinstall script.

At publish time, runner-run declares packages like @runner-run/linux-x64-gnu as optionalDependencies. Your package manager picks the one matching your OS/CPU/libc, then the runner and run shims exec the local binary.

Useful consequences:

  • no postinstall script
  • no install-time network fetch
  • no local Rust toolchain needed
  • lockfiles can pin the main package and platform package together

Supported npm Targets

| OS | Architectures | | ------- | -------------------------------------------- | | Linux | x64/arm64 glibc, x64/arm64 musl, armv7 glibc | | macOS | x64, arm64 | | Windows | x64, arm64, ia32 | | FreeBSD | x64, arm64 experimental | | NetBSD | x64 experimental |

If your platform is not listed, use Cargo:

cargo install runner-run

Or poke the issue cave: https://github.com/kjanat/runner/issues

Troubleshooting

no prebuilt binary found

Your package manager probably skipped optionalDependencies, or your lockfile came from a different platform.

Common causes:

  • npm install --omit=optional or npm install --no-optional
  • yarn install --ignore-optional
  • pnpm configured with optional=false
  • a lockfile committed from another OS/CPU/libc target

Reinstall with optional dependencies enabled. If the lockfile is stale for your target, regenerate it there or force a reinstall:

npm install --force

If optional dependencies are disabled on purpose, use Cargo:

cargo install runner-run

runner works but run does not complete

Regenerate shell completions after installing or upgrading:

eval "$(runner completions)"

Both commands must live in the same bin directory for one generated completion registration to cover both.

More Docs

License

MIT (c) 2026 Kaj Kowalski