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

@studio-fes/create-fes-app

v0.4.8

Published

Interactive wizard to scaffold a new project from the studio fes Nuxt layers starters (Craft CMS, Strapi).

Readme

@studio-fes/create-fes-app

Interactive wizard to scaffold a new project from the studio fes Nuxt layers starters (Craft CMS, Strapi).

Usage (once published to npm)

npx @studio-fes/create-fes-app [project-name]

The wizard asks for:

  • Project name (skipped if passed as an argument)
  • Starter template — currently craft or strapi, one per folder in templates/
  • Package manager — pnpm, npm, yarn or bun
  • Whether to install dependencies right away
  • Whether to run git init

It then copies the chosen template into a new folder, renames package.json, copies .env.example to .env, and prints the next steps.

Developing the templates

templates/craft and templates/strapi are the templates themselves — there is no separate examples/ folder to keep in sync. They are regular pnpm workspace packages (see pnpm-workspace.yaml) that depend on @studio-fes/layer-craft / @studio-fes/layer-strapi via workspace:*, so editing a layer and running the template picks up the change immediately:

pnpm dev:craft   # -> pnpm --filter './packages/create-app/templates/craft' dev
pnpm dev:strapi  # -> pnpm --filter './packages/create-app/templates/strapi' dev

To try the wizard itself against the current source:

node packages/create-app/bin/create-fes-app.mjs

Since the templates still use workspace:* in this state, the CLI resolves that to a real version at scaffold time — either from the sibling package in this monorepo (when run from source) or, if that's not available (e.g. testing outside the repo), from the npm registry.

Publishing

The live templates/craft and templates/strapi folders are pnpm workspace packages — they have node_modules, .nuxt, workspace:* dependencies, none of which is valid or wanted in a published npm tarball. So the package is never published from templates/ directly:

  • prepack (scripts/build-templates-for-publish.mjs) builds a clean copy of each template into dist/templates/<name>, stripping node_modules/.nuxt/.output/.env, pinning workspace:* dependencies to the sibling package's current version, and stashing .gitignore as _gitignore (npm has historically dropped nested .gitignore files from published tarballs).
  • package.json's files field only lists bin and dist, so only that clean build ships. dist/ is gitignored and safe to delete/rebuild at any time (node scripts/build-templates-for-publish.mjs).
  • The CLI (bin/create-fes-app.mjs) looks for dist/templates first and falls back to templates/ — the latter only matters when running the wizard straight from source before it's ever been packed, in which case it also resolves workspace:* at runtime as a safety net.

This version is kept in lockstep with the layer packages (@studio-fes/layer-base/layer-craft/layer-strapi) via the fixed group in .changeset/config.json, so they always bump and publish together.

To publish, run the usual changesets flow from the repo root:

# 1. Commit any pending changes first
git add -A
git commit -m "..."

# 2. Record what changed (select @studio-fes/create-fes-app, pick a bump, write a summary)
pnpm changeset

# 3. Bump version + changelog, then commit
pnpm version-packages
git add -A
git commit -m "chore: version packages"

# 4. Make sure the npm token has access to the @studio-fes org
pnpm exec npm whoami

# 5. Build (packages/* only — create-app has no build script, it's skipped) and publish
pnpm release

# 6. Push the commits and tags
git push --follow-tags

Once published, anyone can run npx @studio-fes/create-fes-app without cloning this repo.