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 🙏

© 2025 – Pkg Stats / Ryan Hefner

gitface

v0.7.0

Published

A simple CLI tool to change your “face” in Git.

Readme

Gitface

GitFace · npm version npm total downloads Test Release

Commit with the right face, every time.

GitFace keeps your Git personas in sync. Capture each identity once, store it as JSON, and apply it to any repository without touching git config.

Why GitFace?

  • Frictionless switching – apply profiles to any repo with gitface use <profile>.
  • Delightful UX – flags for scripts, Interactive prompts for human.
  • Local first – profiles live right on your machine.
  • Safety rails – default scope is local, never pollute your global config by mistake.

Install

npm install --global gitface

Prefer one-off use? Run npx gitface --help.

Quick Start

# Create a profile using the current repo identity as defaults
gitface new work

# Non-interactive creation (useful for CI scripts)
gitface new oss --git-name "Open Source" --email "[email protected]"

# See what is saved (sorted by last update)
gitface list

# Apply a profile to the current repo (local scope is the default)
gitface use work

# Inspect the active Git identity
gitface current

Run gitface <command> --help to see all flags and examples.

Command Reference

| Command | Description | | ------------------------ | --------------------------------------------------------------------------------------------- | | gitface new <profile> | Create a profile from prompts or flags (--git-name, --email, --signing-key, --force). | | gitface edit <profile> | Update a stored profile via flags or an interactive editor. | | gitface list | Render the saved profiles in an Ink table with relative timestamps. | | gitface use <profile> | Apply a profile to Git config; supports --scope local | | gitface current | Display the Git identity currently resolved from config. | |gitface clone | Clone a profile to a new name. | |gitface rename | Rename a profile (alias:mv). | | gitface rm | Remove a profile; add--force` to ignore missing entries. |

Profiles & Storage

  • Files are saved as prettified JSON in ~/.config/gitface/profiles/<profile>.json.
  • When you omit --git-name or --email, GitFace falls back to the identity reported by git config.
  • Created profiles capture createdAt and updatedAt ISO timestamps for auditing.
  • --signing-key values map to user.signingkey; use gitface edit <name> --unset-signing-key to remove it.

Example profile file

{
  "name": "work",
  "gitName": "Company Dev",
  "email": "[email protected]",
  "signingKey": "ABC123",
  "createdAt": "2024-12-01T17:33:14.023Z",
  "updatedAt": "2024-12-01T17:33:14.023Z"
}

Scopes & Safety

  • local scope updates .git/config in the current repo (default).
  • global writes to your user config (~/.gitconfig), handy when you swap machines.
  • system forwards to the system config for admin setups.
  • GitFace automatically wipes user.signingkey when the target profile has no key.

Set GITFACE_LOG_LEVEL=debug (or GITFACE_DEBUG=1) to print stack traces and additional diagnostics. Supported levels: critical, error, warn, info, debug, trace, silent.

Development

pnpm install          # install dependencies
pnpm run lint         # Biome checks
pnpm run typecheck    # tsc --noEmit
pnpm run test         # Vitest (coverage enabled)
pnpm run build        # tsc + tsdown bundle
  • pnpm run dev runs tsdown in watch mode for local hacking.
  • make link (or npm link) exposes the CLI globally for manual testing.
  • Release automation lives in docs/release.md; keep CI green before tagging.