generator-verdaccio-plugin
Version:
plugin generator for verdaccio
133 lines (97 loc) • 4.21 kB
Markdown
# generator-verdaccio-plugin
[](https://www.npmjs.com/package/generator-verdaccio-plugin)
[](https://www.npmjs.com/package/generator-verdaccio-plugin)
[](https://opencollective.com/verdaccio)
[](http://chat.verdaccio.org/)
A [Yeoman](http://yeoman.io) generator that scaffolds [Verdaccio](https://verdaccio.org) plugins with TypeScript and a ready-to-use project structure — so you can focus on writing plugin logic instead of boilerplate.
## Requirements
- [Node.js](https://nodejs.org/) >= 20
- [Yeoman](http://yeoman.io) (`yo`)
## Installation
```bash
npm install -g yo generator-verdaccio-plugin
```
## Quick Start
```bash
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**
```yaml
auth:
verdaccio-my-plugin:
# your custom config
```
**Storage**
```yaml
store:
verdaccio-my-plugin:
# your custom config
```
**Middleware**
```yaml
middlewares:
verdaccio-my-plugin:
enabled: true
```
**Filter**
```yaml
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:
```bash
cd verdaccio-<name>
npm install
npm run build
npm link
```
Then add the plugin name to your `verdaccio.yaml` and run Verdaccio.
## Contributing
```bash
# 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](https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md) for broader contribution guidelines.
## License
MIT © [Juan Picado <@jotadeveloper>]()