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

plggpress

v0.0.4

Published

A reusable VitePress-like static-site generator built from scratch on the plgg family: a typed SiteConfig contract (IA + home data), a single base-path href resolver, and a config-loading CLI.

Readme

plggpress

UNSTABLE - Experimental study work. Part of the plgg monorepo.

A VitePress-like static-site generator, built from scratch on the plgg family. It owns a typed SiteConfig contract (information architecture + home data), a single base-path href resolver, a config-loading CLI (the plggpress bin), and a build pipeline with a build-time dead-link checker. It is the engine that builds the guide.

Why this package exists

plggpress carries a generic web framework internally (src/framework/ — config loading, a router builder, static-build + CLI orchestration, absorbed from the retired app-framework facade; the design-system package now lives outside this monorepo). That framework also wraps the whole mid-library stack (view, server/http, md, highlight); plggpress supplies the docs-site specifics on top of it — the SiteConfig type and the defineSite validator a site's site.config.ts imports, plus the content pipeline that turns Markdown into pages:

plgg ── (internal framework) ── plggpress ── a docs site (e.g. the guide)

How it's organized

  • SiteConfig — the typed IA + home-data contract and its asSiteConfig / defineSite boundary validators (Ok is a typed SiteConfig, Err names the offending field).
  • Href — the single base-path link resolver (href, isExternalHref) every internal link routes through.
  • CheckLinkscollectPageLinks + checkLinks, the pure dead-link pass that fails the build on any broken internal link or bad fragment.
  • PressPressOptions, the BuildReport, and the error vocabulary; build + loadConfig drive a run, and theme / router render the pages.

Content is parsed by plgg-md and highlighted by plgg-highlight; the output is served through plgg-server — reached through the internal framework facade (plggpress/framework, including its plggpress/framework/ssg and plggpress/framework/style subpaths). plggpress depends on the plgg family directly (plgg, plgg-http, plgg-server, plgg-view, plgg-md, plgg-highlight, plgg-cli) and is ESM-only. The static theme support used by the guide is local to plggpress.

Usage

Three modes, one site.config.ts, one loadConfig, one pressRouter — served HTML is byte-identical to built HTML:

| Mode | Command | What it is | | --- | --- | --- | | build | plggpress build --config site.config.ts --contentDir . --outDir dist | SSG — renders every route to static files (the public reader path, served over a CDN). | | serve | plggpress serve --config site.config.ts --contentDir . --port 3000 | A persistent node:http instance rendering the SAME router live; config loaded once at startup, no watch. The mount point for the later /api, /admin, /auth, /mcp subtrees (server/pressServer.ts). | | dev | plgg-bundle dev (via the app's devEntry.ts) | Authoring hot-reload — a toolchain concern, not a plggpress command. plggpress ships no dev command; serve is not its return. |

Conventions

  • as / any / ts-ignore are prohibited (see root CLAUDE.md); untrusted config crosses into the typed core through defineSite.
  • After editing a file:-linked dependency's source, rebuild its dist or this package won't see new exports.