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

crabenv

v0.0.5

Published

The simplest, opinionated way to keep .env files, schemas, and examples aligned.

Readme

🦀 crabenv

The simplest, opinionated way to keep .env files, schemas, and examples aligned.

crabenv is an env var management standard created by Carlo Taleon to minimize env var schema + documentation drift in any codebase. If you follow this standard, you'll find it extremely seamless to "develop locally" and "deploy to production" in any platform!

Why use it

  • [x] Typesafety & Validation
  • [x] Good documentation. Never stale, does what it says.
  • [x] Seamless local development to deployment story.
  • [x] No new config files. Your team doesn't need to install crabenv, it's just manual-crud made automated via CLI.
  • [x] Language-agnostic. No need to learn language-specific configurations for multi-language and monorepos, just use the same CLI commands.

Installation

brew install blankeos/tap/crabenv # Homebrew (macOS/Linux)
npm install -g crabenv            # or npm
bun install -g crabenv            # or bun
cargo binstall crabenv            # or cargo-binstall (prebuilt binary, faster)
cargo install crabenv             # or cargo (build from source)
curl -sSL https://raw.githubusercontent.com/Blankeos/crabenv/main/install.sh | sh # or linux/macos (via curl)

Quickstart

💡 Before anything else, read this 1-page concept of the standard here. Must know Local (.env), Schema (env.ts, etc.), Template (.env.example)

  1. This command auto-detects your project and creates a Local, Schema, and Template
crabenv init
  1. Add an env var
crabenv add
◆ Variable name: DATABASE_URL
◆ Scope: private
◆ Type: string
◆ Example Value: $(pwd)/data.db
◆ Mark as optional: no
◆ Add? yes

# Notice that Local, Template, and Schema are correctly synced 🎉
  1. List your env vars to see if it's used, remove, or update vars
crabenv ls
crabenv remove
crabenv update

😎 That's it! Now imagine the convenience when...

  • A new dev onboards on a new project, they just need to do crabenv cp to get a correct .env file! It's a better cp .env.example .env command!
  • A senior dev wants to deploy a monorepo so what env vars needed for specific apps? Show them all with crabenv ls
  • A senior dev wants to reorganize, sort, standardize the structure of env vars? Re-sort them without thinking about it with crabenv fmt
  • A senior dev wants to check for any drift? crabenv doctor

📁 Languages supported

Regardless of the language or mix of languages in your repositories, you'll be able to use the same commands.

  • [x] 💙 TypeScript/Javascript and Monorepos (includes React, Solid, Vue, Svelte, Vite, NextJS, ReactNative, Backends, and Cloudflare apps)
  • [x] 🐍 Python
  • [x] 🦀 Rust
  • [x] 🐦 Flutter
  • [x] More? Request an adapter via issue (the conventional standard must be discussed).

Agent skill

Completely optional, but in case you want your agent to be autonomous when adding new env vars... Install the crabenv skill for coding agents with:

npx skills add blankeos/crabenv

Useful commands you should know

crabenv init
crabenv copy         # or crabenv cp. (It's a better `cp .env.example .env` command)
crabenv doctor       # It's a checklist of common mistakes
crabenv doctor --fix

# CRUD
crabenv list   # Searchable interactive env inventory, expanded by default
crabenv ls -p  # Print env inventory for scripts/agents
crabenv add    # Wizard-like experience
crabenv update # Wizard-like experience
crabenv remove # Wizard-like experience

crabenv add {VARIABLE_NAME}
    --shared   # if monorepo, adds it to all apps (also --shared '*')
    --shared apps/api apps/web # add it to selected apps
    --example  # optional, for .env.example (you can use templating w/ "$(pwd)/data.db")
    --optional # optional, required by default
    --default  # optional
    # Type flags
    --string   # optional, passed by default
    --numeric  # optional, conflicts w/ string. It's a string, but validates as a number (a numeric string)
    --number   # optional, conflicts w/ string (implicitly z.preprocess(Number))
    --boolean  # optional, conflicts w/ string (implicitly z.preprocess(Boolean))
    --enum     # optional, i.e. --enum=development,production
    # Custom regex
    --testRegex         # optional
    --testRegexMessage  # optional, required when used with `testRegex`
    # ... essentially a cli version of zod
    # Special environment overrides
    --{}_development     # Checks env=development, before applying the type
    --{}_staging         # Checks env=staging, before applying the type
    --{}_production      # Checks env=production, before applying the type
    --{}_ci              # Checks CI=true, before applying the type
crabenv remove {VARIABLE_NAME}
crabenv update {VARIABLE_NAME} # Same flags as add

Documentation

https://crabenv.pages.dev

License

MIT. Fork it if you want!