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

amae-cli

v0.10.5

Published

Ultra-fast package manager for JS/TS written in Rust

Readme

amae

A fast JavaScript package manager written in Rust.

amae resolves, downloads, and links your dependencies the same way npm does — but stores every file exactly once on disk and uses hard links to wire packages into node_modules. No duplicates, no copies, just pointers.


Why

npm copies files. amae doesn't.

Every package you install goes into a global content-addressable store at ~/.amae/store. When the same file is needed in ten different projects, it lives on disk once and is hard-linked into each node_modules. Installs after the first are near-instant because there's nothing to download or unpack — only links to create.

The resolved dependency graph is stored using a hybrid system: a human-readable text lockfile (amae-lock.json) for Git tracking and merge-conflict resolution, and a local binary cache (amae-lock.bin) serialized using bincode for ultra-fast startup.


Install

npm install -g amae-cli

Or with npx (no install needed):

npx amae-cli install

Prebuilt native binaries ship for:

  • macOS arm64 (Apple Silicon)
  • macOS x64 (Intel)
  • Linux x64
  • Windows x64

Usage

amae --version                   # Show amae version
amae install                     # Install all dependencies from package.json
amae install --frozen-lockfile   # Fail if lockfile is out of sync or missing (CI)
amae install --production        # Skip devDependencies (production builds)
amae install --store-dir=./cache # Use a custom local store instead of ~/.amae/store
amae add axios                   # Add a package and install
amae add -D vitest               # Add a dev dependency
amae remove axios                # Remove a package and reinstall
amae update                      # Update all dependencies to their latest versions (semver)
amae update axios                # Update a specific package and its transitives
amae outdated                    # List dependencies that are out of date
amae why axios                   # Traces and prints why a package is installed
amae completions zsh             # Generate shell completion scripts (bash/zsh/fish...)
amae run build                   # Run a script from package.json
amae test                        # Run the "test" script
amae start                       # Run the "start" script
amae list                        # List installed packages with resolved versions
amae clean                       # Delete node_modules and lockfiles
amae prune                       # Clear the global ~/.amae/store cache

Workspaces

amae understands monorepos. It reads "workspaces" from the root package.json or pnpm-workspace.yaml and resolves local packages directly without touching the registry.

my-monorepo/
├── package.json            # { "workspaces": ["packages/*"] }
├── packages/
│   ├── math-utils/
│   │   └── package.json    # { "name": "math-utils", "version": "1.0.0" }
│   └── calc-app/
│       └── package.json    # { "dependencies": { "math-utils": "workspace:*" } }
amae install
# math-utils symlinked directly to packages/math-utils — no registry request
# external packages downloaded once, hard-linked everywhere

How it works

amae install
  │
  ├─ 1. Read package.json (and all workspace packages if monorepo)
  │
  ├─ 2. Resolve — async semver resolution against npm registry
  │      Workspace packages are resolved locally, skipping the network
  │
  ├─ 3. Download — parallel .tgz fetching with SHA integrity check
  │      Each package extracted once into ~/.amae/store/<name>@<version>/
  │      Store is set read-only after extraction to prevent corruption
  │
  ├─ 4. Link — hard links from store into node_modules/.store/
  │      Symlinks from node_modules/<name> → .store/<name>@<version>/
  │      Binaries linked into node_modules/.bin/
  │
  └─ 5. Lifecycle — preinstall / install / postinstall scripts run
         in topological dependency order

The dependency graph is saved to both amae-lock.json (tracked in Git) and amae-lock.bin. On subsequent runs, amae reads the binary lockfile directly for instant startup. If amae-lock.json is newer (e.g. after a git pull) or the binary is missing (e.g. after a clean git clone), the binary cache is automatically rebuilt from the JSON lockfile.


.npmrc

amae reads both local .npmrc and ~/.npmrc. Private registries, scoped registries, and auth tokens work out of the box:

registry=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=your_token_here

# Scoped registry for @mycompany packages
@mycompany:registry=https://npm.mycompany.com/

Build from source

git clone https://github.com/poise52/amae
cd amae
cargo build --release
./target/release/amae install

Requires Rust 1.75+.


License

MIT

Поддержать разработчика

USDT BEP 0x46922F2abf0eA51E255C6a62bC8Fb71e604Bad76

USDT ERC 0x46922F2abf0eA51E255C6a62bC8Fb71e604Bad76

USDT TRC TG7rYQM4nsC293Eg7cJ1ph1kguLh1A8xCV

BTC bc1q5zmn5f3egeja9v9fwdjn2ld773k4sq0wv8csh3

ETH 0x46922F2abf0eA51E255C6a62bC8Fb71e604Bad76