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

@niondigital/create-astro

v0.5.2

Published

Scaffold a new Astro project from nion's astro-starter.

Readme

@niondigital/create-astro

Scaffolds a new Astro project from nion's astro-starter: the base template plus any of three composable modules (storyblok, svelte, storybook).

npm create @niondigital/astro@latest my-new-site                          # interactive
npm create @niondigital/astro@latest my-new-site -- --yes --svelte --storybook

Note the -- separator before the flags in the non-interactive form: npm create passes everything after -- to the CLI. --yes is the agent/CI form (accept defaults, never prompt).

A GitHub token is required only to clone the private template repo. The CLI resolves it from --token, GITHUB_TOKEN, GIGET_AUTH, or a healthy gh auth session. Dependencies install from public npm — no token needed for that.

Development

nvm use                 # Node 24.16.0 (see cli/.nvmrc)
npm ci
npm run build           # tsdown → dist/index.mjs
npm run dev -- <args>   # run from source (node src/index.ts)
npm test                # 74 fast unit/contract tests
npm run typecheck       # tsc --noEmit

Tests

  • npm test — the fast unit/contract suite (src/**/*.test.ts), incl. the modules.manifest ↔ docs cross-check. Configured via vitest.config.ts, which excludes the slow scaffold harness.

  • npm run test:e2e — the scaffold e2e harness (test/scaffold.e2e.test.ts, via vitest.e2e.config.ts). It is RUN_E2E-guarded and builds + verifies a real scaffold per module combo, so it is slow. It needs no token — every combo is --local (no remote clone) and the template's @niondigital/* deps install from public npm:

    npm run build
    npm run test:e2e                     # all 6 combos
    # filter to a subset:
    RUN_E2E=1 npx vitest run --config vitest.e2e.config.ts -t 'svelte'

    The harness runs the built bin (node cli/dist/index.mjs <tmpdir> --local <repoRoot>/template --yes <flags>) into os.tmpdir() for each of the six valid combos (base, --storyblok, --svelte, --svelte --storybook, --storyblok --svelte, --storyblok --svelte --storybook) and asserts the module gates: the Storyblok rule#1 ESLint guard fires on a forbidden @storyblok import in src/components, a hydrated astro-island appears in built HTML for svelte combos, and build-storybook produces storybook-static/index.html.

CI

Workflow: .github/workflows/cli-ci.yml. Two jobs:

  • unit — runs on every PR (and on push to main/develop) touching cli/**, docs/modules/**, template/**, or the workflow file. Steps: npm cinpm run buildnpm run typechecknpm test. Fast; no scaffold installs and no token needed (the CLI's own deps are public).
  • e2e — runs the scaffold harness, gated so it does not run on every PR. It triggers only when:
    • the weekly schedule fires (cron: '0 6 * * 1', Mondays 06:00 UTC), or
    • the workflow is dispatched manually (workflow_dispatch), or
    • a PR carries the run-e2e label (the pull_request trigger includes the labeled type, so adding the label re-runs it on an existing PR).

Triggering e2e manually

  • Add the run-e2e label to a PR, or
  • Go to Actions → cli-ci → Run workflow (workflow_dispatch).

e2e auth requirement

None. Every combo is --local (no remote clone) and the template's @niondigital/* deps install from public npm, so the e2e job runs with no secrets (permissions: contents: read only).