Skip to content

Nuxt stories module - a kind of ultra light Storybook

Notifications You must be signed in to change notification settings

rezozero/nuxt-stories

Repository files navigation

Nuxt stories

npm version Nuxt

Nuxt stories module - a kind of ultra light Storybook

Features

  • 👯‍♀️  Share the same configuration between the app and the stories
  • 💆‍♂️  No configuration needed
  • 🚀  Fast - no extra build step during development

Quick Setup

  1. Add @rezo-zero/nuxt-stories dependency to your project
# Using pnpm
pnpm add -D @rezo-zero/nuxt-stories

# Using yarn
yarn add --dev @rezo-zero/nuxt-stories

# Using npm
npm install --save-dev @rezo-zero/nuxt-stories
  1. Add @rezo-zero/nuxt-stories to the modules section of nuxt.config.ts
export default defineNuxtConfig({
  modules: [
    '@rezo-zero/nuxt-stories'
  ]
})

That's it! You can now use Nuxt stories in your Nuxt app ✨

Options

route

  • type: { name?: string; file?: string; path?: string; }
  • default:
{ 
    name: 'stories', 
    file: './runtime/components/StoriesPage.vue', 
    path: '/_stories' 
}

root

  • type: string | string[]
  • default: '**/*.stories.vue'

pattern

  • type: string | string[]
  • default: ['components', 'stories']

Assets

You can add assets to your stories by adding a stories folder in the /server directory.
All the assets in this folder will be available as public assets with the prefix /stories.
You can use it like the /public folder in the Nuxt app, but the folder will be available only when the stories are available too.

Development

# Install dependencies
npm install

# Generate type stubs
npm run dev:prepare

# Develop with the playground
npm run dev

# Build the playground
npm run dev:build

# Run ESLint
npm run lint

# Run Vitest
npm run test
npm run test:watch

# Release new version
npm run release

Caveats

The app must use Nuxt layout.
Behind the scene, this module will use a layout stories (automatically injected) to display the stories.
At least, the app must have a default layout. That is how the layout can be switched by the module.