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

@yhotamos/extension-release-cli

v0.2.1

Published

CLI tool to build, package, and publish Chrome extensions to the Chrome Web Store.

Readme

Extension Release CLI

English | 日本語

A CLI tool to pack, upload, and publish Chrome extensions to the Chrome Web Store — all from your terminal.

exr release dist/

Features

  • pack — Zip your extension source directory into a versioned archive
  • upload — Upload the zip to the Chrome Web Store via API
  • publish — Publish the uploaded extension (supports staged rollout)
  • release — Run pack → upload → publish in a single command
  • status — Inspect the live status of your extension on the store
  • Built-in env file support — powered by dotenvx (bundled, no separate install needed)

Requirements

  • Node.js >= 18

Installation

npm install -g @yhotamos/extension-release-cli

Setup

1. Google API Credentials

You need OAuth2 credentials to authenticate with the Chrome Web Store API.

  1. Go to Google Cloud Console and create a project.
  2. Enable the Chrome Web Store API.
  3. Create OAuth 2.0 credentials (Desktop app type) and note your CLIENT_ID and CLIENT_SECRET.
  4. Obtain a REFRESH_TOKEN using the OAuth2 playground or the Google auth flow.
    • Scopes required: https://www.googleapis.com/auth/chromewebstore

2. Chrome Web Store IDs

3. Environment File

Create a .env file in your project root:

CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
REFRESH_TOKEN=your_refresh_token
PUBLISHER_ID=your_publisher_id
EXTENSION_ID=your_extension_id

You can also use .env.local (takes precedence over .env), or environment-specific files like .env.production passed via --env:

exr release dist/ --env .env.production

[!TIP] Since dotenvx is built in, you can encrypt your env files. This keeps plain-text secrets out of your repository and reduces the risk of AI coding agents (e.g., Claude Code or OpenAI Codex) accidentally reading your plain .env files.

npx dotenvx encrypt -f .env.production

This rewrites the file with encrypted values and generates a .env.keys file with the decryption key. The CLI reads .env.keys automatically. Add .env.keys to .gitignore and store the key in your CI secrets.

Typical Workflow

# 1. Create your .env file (first time only)
# See the Setup section above for required variables

# 2. Build your extension
npm run build

# 3. Release in one command (.env is loaded automatically)
exr release dist/

# 4. Check the store status afterwards
exr status

Or step by step:

exr pack dist/
exr upload releases/my-extension-1.0.0.zip
exr publish

Author

yhotta240 https://github.com/yhotta240