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

rabbit-warren

v1.1.1

Published

You've been debugging for two hours. You're three `console.log`s deep into `node_modules`, you've got a symlinked local build of some lib, and you have twelve uncommitted files scattered everywhere.

Readme

🐇 rabbit-warren

You've been debugging for two hours. You're three console.logs deep into node_modules, you've got a symlinked local build of some lib, and you have twelve uncommitted files scattered everywhere.

Now something urgent just landed on a different branch.

rabbit-warren saves your whole mess — git changes, untracked files, branch, hand-patched node_modules, symlinked local packages — and gets you out cleanly. Pop back in when you're done.


Install

npm install -g rabbit-warren

Or link locally during development:

npm link

Usage

# Core
wrn stash [name]       # save context and clean working directory
wrn pop [name]         # restore and delete session
wrn apply [name]       # restore without deleting
wrn swap <name>        # save current session, switch to another

# Inspect
wrn list               # list all sessions
wrn show [name]        # inspect a session's contents
wrn status             # show current session and tracked repos
wrn session            # print current session name
wrn diff [path]        # compare stashed files with current state

# Manage
wrn drop [name]        # delete session without restoring
wrn clean              # reset working directory, no save
wrn track [path]       # add a repo, file, or folder to current session
wrn untrack <path>     # remove from current session
wrn checkout <session> <path>  # apply a specific file from a session

# Share
wrn export [name]      # export session to .wrn.tar.gz
wrn import <file>      # import and apply session from archive

Stash flow

# deep in a debug session on feature/auth — changes everywhere
wrn stash

# working directory is now clean — switch branches safely
git checkout main

# pick up exactly where you left off, returns to feature/auth
wrn pop

npm install is not needed after stash — it runs automatically if node_modules were modified.

Session flow

Every stash belongs to a named session. Multiple repos can live in the same session. Stashing always targets the active session (or default if none is set).

# name your session when you stash
wrn stash auth-refactor

# add another repo to the same session (no clean, just snapshot)
cd ~/dev/frontend
wrn track

# urgent fix needed — update snapshot for this repo and step away
wrn stash

# later, restore all repos in the session
wrn pop auth-refactor

Use swap to juggle two sessions without losing either:

wrn swap hotfix        # saves auth-refactor, restores hotfix
wrn swap auth-refactor # saves hotfix, restores auth-refactor

Sharing sessions

# export a stored session
wrn export auth-refactor           # → auth-refactor.wrn.tar.gz

# snapshot current state, export, and discard the snapshot
wrn export --current

# import and apply on another machine
wrn import auth-refactor.wrn.tar.gz

What gets stashed

| Thing | How | | -------------------------------- | ---------------------------------------- | | Tracked file changes | git diff HEAD patch | | Untracked files | copied and removed from working dir | | Symlinked packages | symlink targets saved as JSON | | Hand-edited node_modules files | individual files copied (no full copies) |

Sessions live at ~/.rabbit-warren/sessions/<name>/ — outside the repo, safe from git. One subdirectory per tracked repo plus a session.json index.


Notes

  • stash always leaves the working directory clean (git status shows nothing)
  • npm install runs automatically after stash when node_modules were modified
  • Modified node_modules detection uses file mtimes relative to your lockfile
  • Gitignored files (including node_modules itself) stay put unless modified
  • stash --deep also captures modified files in transitively linked dependencies