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

@lupinum/ginko-content

v0.1.2

Published

Collection-first content engine for Nuxt

Readme

@lupinum/ginko-content

Filesystem-first content for Nuxt 4.

Write Markdown and data files in content/, define collections once in content.config.ts, then use those collection handles for route pages, lists, navigation, search, i18n, and sitemap output.

Use it when you want content files to stay simple, but your Nuxt app still needs explicit APIs for route resolution, typed frontmatter, localized content, and server-side reads.

Requirements

  • Node.js 20 or later
  • Nuxt 4.0 or later

Install

npx nuxi module add @lupinum/ginko-content

The Nuxt CLI installs the package and registers the module in nuxt.config.ts. If you prefer to install by hand:

pnpm add @lupinum/ginko-content
export default defineNuxtConfig({
  modules: ['@lupinum/ginko-content'],
  imports: {
    autoImport: true
  }
})

Quick Start

Define a collection:

// content.config.ts
import { defineCollection, defineContentConfig } from '@lupinum/ginko-content/config'

export const pages = defineCollection({
  type: 'page',
  source: '**/*.md'
})

export default defineContentConfig({
  collections: {
    pages
  }
})

Create content/index.md:

---
title: Welcome
---

# Welcome

This file renders at `/`.

Render the current route through the collection:

<!-- pages/[...slug].vue -->
<script setup lang="ts">
const { page } = await useContentPage('pages')
</script>

<template>
  <ContentRenderer v-if="page" :value="page" />
</template>

Features

  • file-authored pages and navigation from content/
  • collection definitions as the source of truth for content shape and source files
  • Markdown, Comark component tags, YAML, JSON, and CSV ingestion
  • locale-aware content routing
  • route-aware page loading with useContentPage('pages')
  • semantic previous/next route-page data through useContentPage('pages', { surround })
  • server reads through one, many, paginate, resolveOne, tree, and neighbors
  • Vue composables for the same read model
  • search helpers for MiniSearch, Pagefind, and provider-owned search
  • sitemap integration for public content routes
  • a server-side provider contract for advanced custom sources

I18n, Sitemap, and Prerender Ownership

For localized Nuxt apps, keep one source of truth per route type:

  • Static Nuxt page paths belong in Nuxt I18n i18n.pages.
  • Content page paths belong in Ginko collection routes and content files.
  • Sitemap XML is generated by @nuxtjs/sitemap.
  • Ginko registers the content sitemap source and contributes content prerender routes.

Do not duplicate docs, blog, pricing, privacy, or translated locale paths in sitemap.urls or app-owned nitro.prerender.routes arrays. Use @nuxtjs/sitemap >= 8.0.15 when translated static app slugs such as /preise and /en/pricing need cross-locale sitemap alternates.

See the public guide: Sitemap and prerender.

Scope

The default provider reads files from your Nuxt project. The package does not include a CMS UI, Studio, admin panel, or content editing workflow.

Docs

Credits

Ginko Content is its own implementation, with clear inspiration from Nuxt Content, Nuxt UI, and Comark, the successor to the previous MDC work.

License

MIT