Skip to content

verdaccio/generator-verdaccio-plugin

Repository files navigation

generator-verdaccio-plugin

verdaccio (latest) verdaccio (downloads) Backers Discord

A Yeoman generator that scaffolds Verdaccio plugins with TypeScript and a ready-to-use project structure β€” so you can focus on writing plugin logic instead of boilerplate.

Requirements

Installation

npm install -g yo generator-verdaccio-plugin

Quick Start

yo verdaccio-plugin

The generator walks you through a short set of prompts and creates a verdaccio-<name>/ directory with everything you need.

Interactive Prompts

Prompt Description
Plugin type auth, storage, middleware, or filter (see below)
Plugin name Suffix after verdaccio- β€” e.g. my-plugin produces verdaccio-my-plugin
Description Short description added to package.json
GitHub username / org Populates the repository field in package.json
Author name & email Stored locally and reused in future runs
Keywords Comma-separated; verdaccio is always appended automatically

Plugin Types

Type Implements Use when you want to…
auth authenticate, allow_access, allow_publish Control who can log in and access packages
storage Custom storage backend Store packages somewhere other than the local filesystem
middleware Express middleware Add custom HTTP routes or request/response processing
filter filter_metadata Transform or filter package metadata before it reaches the client

Registering your plugin in verdaccio.yaml

Auth

auth:
  verdaccio-my-plugin:
    # your custom config

Storage

store:
  verdaccio-my-plugin:
    # your custom config

Middleware

middlewares:
  verdaccio-my-plugin:
    enabled: true

Filter

filters:
  verdaccio-my-plugin:
    # your custom config

Generated Project Structure

verdaccio-<name>/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.ts          # Re-exports the plugin class
β”‚   └── *-plugin.ts       # Main plugin implementation
β”œβ”€β”€ types/
β”‚   └── index.d.ts        # Custom configuration types
β”œβ”€β”€ .editorconfig
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .npmignore
β”œβ”€β”€ .nvmrc
β”œβ”€β”€ package.json
β”œβ”€β”€ README.md
└── tsconfig.json

After scaffolding, build the plugin and link it for local testing:

cd verdaccio-<name>
npm install
npm run build
npm link

Then add the plugin name to your verdaccio.yaml and run Verdaccio.

Contributing

# Install dependencies
pnpm install

# Build the generator
pnpm build

# Run tests
pnpm test

# Run tests with coverage
pnpm test:coverage

See the Verdaccio contributing guide for broader contribution guidelines.

License

MIT Β© Juan Picado <@jotadeveloper>

Sponsor this project

Contributors