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

@zonekit/cli

v0.2.0

Published

CLI for Zonekit external config validation, building, diffing, and publishing

Downloads

70

Readme

@zonekit/cli

Command-line interface for Zonekit config validation, building, diffing, and publishing.

Use the zonekit CLI in your config repository or CI pipeline to validate authored config, build artifacts, compare versions, publish outputs, and promote a chosen version into a lock file.

Installation

pnpm add -D @zonekit/cli

Or install globally:

pnpm add -g @zonekit/cli

Before you start

The CLI assumes you already have:

  • a zonekit.config.yaml file
  • an optional contracts/ directory if you validate consumer contracts
  • an optional adapter module if you publish to a CDN or storage provider

Typical workflow

zonekit validate --config zonekit.config.yaml --contracts ./contracts
zonekit build --config zonekit.config.yaml --out ./dist
zonekit diff --base ./dist/version.json --head ./dist/config.json --contracts ./contracts
zonekit publish --buildDir ./dist --out ./publish --adapter @acme/zonekit-upload-adapter
zonekit promote <version-hash> --lock ./zonekit.lock.json --artifactsDir ./publish

Recommended order:

  1. validate before every change or in pre-merge CI.
  2. build to produce the exact artifact set you will diff or publish.
  3. diff to understand structural change and contract impact.
  4. publish to stage or upload the chosen artifact set.
  5. promote to move a known version into the lock file your app consumes.

Common commands

Validate

zonekit validate --config zonekit.config.yaml

Use --contracts ./contracts to enforce the surface promised to consuming apps, and --json for machine-readable CI output.

Build

zonekit build --config zonekit.config.yaml --outDir dist/

build validates first, then writes resolved artifacts into dist/ by default.

Diff

zonekit diff --base dist/version.json --head dist/config.json

Use --contracts ./contracts when you want per-app impact analysis. Use --json in automation.

Publish

zonekit publish --buildDir dist --out publish --adapter @acme/zonekit-upload-adapter

publish reads built artifacts from dist/ by default and writes published outputs to publish/. If you omit --adapter, it still prepares the publish output locally.

Promote

zonekit promote <version-hash> --lock zonekit.lock.json --artifactsDir publish

promote updates zonekit.lock.json by default and reads published artifacts from publish/.

Command summary

| Command | Purpose | Default paths | |---|---|---| | validate | Validate config and optional contracts | zonekit.config.yaml | | build | Validate and write resolved artifacts | config: zonekit.config.yaml, out: dist/ | | diff | Compare two config versions | base: dist/version.json, head: dist/config.json | | publish | Publish or stage built artifacts | buildDir: dist/, out: publish/ | | promote | Update the lock file to a chosen version | lock: zonekit.lock.json, artifactsDir: publish/ |

Run zonekit <command> --help for command-specific options.

Programmatic usage

import { runCli } from "@zonekit/cli";

const exitCode = await runCli(["validate", "--config", "./zonekit.config.yaml"], {
  stdout: console.log,
  stderr: console.error,
});

API overview

  • runCli(argv, runtime) -- Run the CLI with given arguments and stdout/stderr handlers, returns exit code

License

MIT

Read more: