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

@medyll/monorepo-vitrine

v1.1.0

Published

Sync monorepo packages to individual GitHub showcase repositories

Readme

monorepo-vitrine

A CLI that creates individual GitHub "showcase" repositories from packages in any monorepo (pnpm, yarn or npm workspaces). Each showcase repo mirrors the package README and selected files (CHANGELOG, LICENSE, etc.), making packages discoverable without exposing the full monorepo.

Features

  • Works with pnpm (pnpm-workspace.yaml), yarn and npm (workspaces in package.json)
  • Creates or updates a dedicated GitHub repository per package
  • Syncs README.md, CHANGELOG.md, LICENSE, SECURITY.md, CONTRIBUTING.md
  • Adds a banner linking back to the source monorepo
  • Supports dry-run mode, orphan cleanup, and CI environments

Installation

Install at the root of your monorepo:

pnpm add -Dw @medyll/monorepo-vitrine
# or
yarn add -D @medyll/monorepo-vitrine
# or
npm install -D @medyll/monorepo-vitrine

Quick start

Run the CLI from the root of your monorepo:

# Preview what would happen (no changes pushed)
monorepo-vitrine --dry-run --verbose

Usage

monorepo-vitrine [options]

Options

| Flag | Description | |------|-------------| | -d, --dry-run | Simulate changes without pushing to GitHub | | -p, --allow-private | Include packages marked as private in their package.json | | -c, --cleanup | Delete showcase repos that no longer match a workspace package | | -v, --verbose | Print detailed logs and full error stacks | | -s, --suffix [value] | Append a suffix to repo names. Without value: uses showcase. Omitted: no suffix |

Examples

# Dry-run with verbose output
monorepo-vitrine --dry-run --verbose

# Create showcase repos with default suffix (-showcase)
monorepo-vitrine --suffix

# Create showcase repos with a custom suffix
monorepo-vitrine --suffix=examples

# Include private packages and clean up orphans
monorepo-vitrine --allow-private --cleanup

Authentication

Set GITHUB_TOKEN in your environment with a token that has repo permissions on the target GitHub account.

export GITHUB_TOKEN=ghp_xxxxxxxxxxxx

CI Integration

The CLI detects CI environments automatically. When GITHUB_ACTIONS is set, it uses token-based HTTPS remotes instead of SSH.

The recommended approach is to add a job to an existing workflow (release, publish, or push on main):

# .github/workflows/release.yml
name: Release

on:
  push:
    branches: [main]
  workflow_dispatch: # allows manual trigger

jobs:
  publish:
    # ... your existing publish job

  showcase:
    needs: publish
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npx @medyll/monorepo-vitrine --suffix
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

How it works

Repository names are derived from the package name (scope removed). For example, @medyll/idae-socket becomes idae-socket, or idae-socket-showcase with --suffix.

License

MIT