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

@lewebsimple/wpop

v0.0.13

Published

WordPress operations CLI for Websimple projects.

Readme

WPop

WordPress operations CLI for Websimple projects.

Deploy environment

wpop deploy needs:

  • REMOTE_HOST
  • REMOTE_PORT
  • REMOTE_USER
  • REMOTE_PATH

If any REMOTE_* value is missing, wpop reads the site's Actions variables (repository variables over organization variables), looking on GitHub first (websimple-com/<slug>), then on Gitea (wp-sites/<slug>) for sites that have not moved yet. The first source that provides every required value wins.

  • GitHub token: WPOP_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN, or the GitHub CLI login (gh auth login)
  • Gitea token (read-only is enough): WEBSIMPLE_GITEA_API_TOKEN, WPOP_GITEA_TOKEN, or GITEA_TOKEN

The slug is the name of the origin repository (whatever its host), or the directory name when there is no origin. You can override this with:

  • WPOP_GITHUB_REPO=websimple-com/example, WPOP_GITHUB_OWNER=websimple-com
  • WPOP_GITEA_REPO=wp-sites/example
  • WPOP_GITEA_OWNER=wp-sites and WPOP_GITEA_REPO_NAME=example
  • WPOP_GITEA_BASE_URL=https://gitea.websimple.com

Provision

wpop provision <slug> clones websimple-com/<slug> from GitHub when your SSH key can read it; otherwise it uses Gitea wp-sites/<slug>, creating it from templates/wp-boilerplate if missing.

Frontend builds

Before syncing, wpop deploy builds frontend assets (skip with --skip-node):

  1. the site root, when it has a package.json — a frontend kept at the repository root that builds into a theme's dist/ (e.g. a Lovable-connected site);
  2. every wp-content/themes/*/ that has its own package.json.

The lockfile picks the package manager: bun.lock → bun, pnpm-lock.yaml → pnpm, yarn.lock → yarn, otherwise npm. Installs are frozen, so a package.json change without its lockfile fails the deploy. The CI runner needs the matching tool (e.g. oven-sh/setup-bun for bun).