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

bundlebee-cli

v1.1.0

Published

Manage, push, sign and seed your Bundles with Bees!

Downloads

187

Readme

bundlebee

Bundle JavaScript modules into a Hyperbee for peer-to-peer sharing.

Install

npm install -g bundlebee

Publishing modules with Bundlebee

Bundlebee replaces npm publish with P2P distribution. You bundle your module into a Hyperbee, seed it on the swarm, and consumers import it by link — no registry required.

Release flow

1. Bundle your module

bundlebee store . index.js

This traverses ., resolves its dependency tree from index.js (if no entrypoint, index.js will be used), and stores everything into a local Hyperbee. On completion it prints the import link directly:

✔ Added 14 file(s):
  /index.js
  /lib/utils.js
  ...

Key: bundle+pear://0.7.zgqe3s3i7dcb9tirqu8zb5tb9c7xkbs165eyiaxy1ep7xhqboozy/index.js
Length: 7

That Key: line is your import link — copy it and share it with consumers.

Optionally: Use --abi to tag each release. The ABI must increment with each publish — think of it as your version number. Append ?abi=<n> to the link so consumers resolve the correct checkout.

If ABI is provided instead of length, it has the same end effect. Except it will need to get the latest Bundlebee data; and search it to find the correct checkout point based on the ABI.

Pinning with length: For safety, length is prefixed to the url so we can checkout the exact Bundle rather than latest:

bundle+pear://0.7.zgqe3s3i7dcb9tirqu8zb5tb9c7xkbs165eyiaxy1ep7xhqboozy@7/index.js?abi=1

Note: --dry-run lets you preview what would be stored and warns if your ABI isn't greater than the last one.

2. Seed it

bundlebee seed

This joins the Hyperswarm on your bundle's discovery key so peers can replicate. Keep this running (or add blind peers to package.json for persistent seeding):

{
  "blindPeers": ["<public-key>"]
}

4. Import from another project

const Import = require('bundlebee-import')
const Corestore = require('corestore')
const Hyperswarm = require('hyperswarm')

const store = new Corestore('./reader-storage')
const swarm = new Hyperswarm()
swarm.on('connection', (conn) => store.replicate(conn))

const mod = await Import(store, 'bundle+pear://0.7.zgqe3s3i7dcb...@7/index.js', {
  swarm
})

// mod is the module's exports, as if you had require()'d it

bundlebee-import joins the swarm, replicates the core, resolves the ABI checkout, loads the module graph, and returns module.exports — then tears down the Bundlebee instance.

Note: swarm is optional, and can be handled manually

Updating

To publish a new version, simply run again:

bundlebee store . index.js

Distribute the new link with the updated length or abi.

Usage

Store

Bundle a folder into a Bundlebee:

bundlebee store ./my-project
bundlebee store ./my-project main.js --abi 1
bundlebee store ./my-project --include-modules
bundlebee store ./my-project --dry-run

| Flag | Description | | ---------------------- | ---------------------------------------------- | | --storage, -s <path> | Corestore storage path (default: .bundlebee) | | --abi, -a <abi> | Store under a specific ABI | | --include-modules | Include node_modules (default: false) | | --dry-run | Gather files without writing |

Checkout

Checkout files from a Bundlebee to disk:

bundlebee checkout
bundlebee checkout --abi 2 --out ./build
bundlebee checkout --key <z32-key>

| Flag | Description | | ---------------------- | ---------------------------------- | | --storage, -s <path> | Corestore storage path | | --key, -k <key> | Source Bundlebee key (z32-encoded) | | --abi, -a <abi> | Checkout a specific ABI | | --out, -o <path> | Output directory |

List

List files stored in a Bundlebee:

bundlebee list
bundlebee list --abi 1

ABIs

List all stored ABIs:

bundlebee abis

Diff

Checkout multiple ABIs into a temporary git repo for diffing:

bundlebee diff 1 2 3
bundlebee diff --all
bundlebee diff --all --out ./diff-output

Each ABI is checked out as a separate git commit. The output directory is removed on Ctrl-C.

Seed

Seed your Bundlbee. Can optionally get blind peer keys from package.json.

Should be an array of z32 encoded strings blindPeers.

{
  "main": "index.js",
  "blindPeers": [
    "qt1zg7dwci3ze7dfqp48e3muqt4gkh5wqt1zg7dwci3ze7dfqp4y"
  ],
  ...
}
bundlebee seed
bundlebee seed --add

--add will add your core to the blind peers and request they be announced

How it works

Bundlebee traverses a project's dependency graph starting from an entry point, resolves all require() calls, and stores the resulting files in a Hyperbee keyed by ABI version. This makes versioned module bundles available over Hyperswarm for P2P distribution.

License

Apache-2.0