Back to feed

endevco/aube

endevco/aube
538
+126/day
12
Rust

A fast Node.js package manager

From the README

aube

A fast Node.js package manager that drops into existing projects.

aube means dawn in French. Pronounced /ob/, like "ohb".

Read the docs

[!WARNING] aube is beta software. It aims for compatibility with pnpm v11, but it has not been tested across many projects yet.

Why Try It

Fast installs. Warm CI is about 7x faster than pnpm and 3x faster than Bun in the current benchmarks. Across the fixture set, aube runs up to ~22x faster than pnpm and up to 3x faster than Bun.

Existing lockfiles. Reads and writes pnpm-lock.yaml, package-lock.json, npm-shrinkwrap.json, yarn.lock, and bun.lock in place.

Cheap repeat commands. aube run test, aube test, and aube exec vitest auto-install when dependencies are stale, then skip that work when nothing changed.

Less disk use. A global content-addressable store lets projects share package files instead of keeping a full copy of the same dependencies in every checkout.

Secure defaults. aube defaults to safer installs: new releases wait out a minimum age, exotic transitive dependencies are blocked, and dependency lifecycle scripts require approval.

Install

The recommended path is mise:

mise use -g aube

Check that it is on your PATH:

aube --version

Inside a project, you can also pin aube with mise:

mise use aube

aube is also published on npm:

npm install -g @endevco/aube

While aube is beta, Homebrew installs come from the Endev tap:

brew install endevco/tap/aube

See other install methods.

First Install

Run aube in an existing Node.js project:

aube install

If the project already has a supported lockfile, aube reads it and writes updates back to the same file. That makes it easy to try aube locally without forcing the rest of the team to switch package managers first.

For a new project with no lockfile, aube creates aube-lock.yaml.

Daily Commands

aube install              # install dependencies
aube add react            # add a dependency
aube add -D vitest        # add a dev dependency
aube remove react         # remove a dependency
aube update               # update dependencies within package.json ranges
aube run build            # run a package.json script
aube test                 # run the test script, auto-installing first if needed
aube exec vitest          # run a local binary
aube dlx cowsay hi        # run a package in a throwaway environment
aube ci                   # clean, frozen install for CI

You can also run scripts directly:

aube dev
aube build
aube lint

If the script exists in package.json, aube treats that as aube run .

Shortcuts: aubr and aubx

aubr and aubx are multicall shims for aube run and aube dlx. They share a binary with aube and dispatch purely on argv[0], so every flag that works on the full command also works on the shim:

aubr build            # aube run build