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

@object-ui/create-plugin

v18.3.0

Published

CLI tool to scaffold ObjectUI plugins

Readme

@object-ui/create-plugin

CLI tool to quickly scaffold new ObjectUI plugins with best practices.

Usage

# Using pnpm
pnpm create @object-ui/plugin my-plugin

# Using npm
npm create @object-ui/plugin my-plugin

# Using npx
npx @object-ui/create-plugin my-plugin

What Gets Generated

The tool creates a complete plugin package structure:

packages/plugin-my-plugin/
├── src/
│   ├── index.tsx           # Plugin export & registration
│   ├── MyPluginImpl.tsx    # Component implementation
│   ├── MyPluginImpl.test.tsx # Tests
│   └── types.ts            # Schema definitions
├── package.json
├── tsconfig.json
├── vite.config.ts
├── vitest.setup.ts         # Registers the jest-dom matchers
├── LICENSE                 # Full text of the licence you chose
└── README.md

Features

  • ✅ TypeScript support out of the box
  • ✅ Vite build configuration
  • ✅ Component registration with ComponentRegistry
  • ✅ Runnable Vitest setup — jsdom environment, Testing Library and the jest-dom matchers are all declared, so pnpm test is green on the first run
  • ✅ Proper package.json with workspace dependencies
  • ✅ A LICENSE carrying the full text of the licence the manifest declares — never a license field with nothing behind it
  • ✅ README template
  • ✅ Type definitions

Interactive Mode

Run without arguments for interactive prompts:

pnpm create @object-ui/plugin

You'll be prompted for:

  • Plugin name
  • Description
  • Author name
  • License — MIT (default), Apache-2.0, BSD-3-Clause or ISC

The licence you pick is written to package.json and its full text is written to LICENSE, so a published tarball never claims a licence it does not carry. A non-interactive run (no TTY, or a cancelled prompt) takes MIT and still writes the text.

Non-interactive Runs and Cancelling

One rule covers every answer you do not give: it takes the default the prompt offered, and the complete file set is still written. There are two ways an answer goes missing, and they behave the same way:

  • No TTY — a pipe, a CI step, create-plugin my-plugin < /dev/null. Nothing is asked; every prompt takes its default and the plugin is scaffolded.
  • Cancelling — Ctrl-C at a prompt. The questions stop there; the cancelled question and the ones after it take their defaults.

The plugin name is the one exception, because it is the one answer with no default — a scaffolder cannot invent the package it is scaffolding. A run that reaches the name prompt with no TTY, or cancels it, prints Plugin name is required and exits 1 without creating anything. Pass the name as an argument to scaffold non-interactively:

create-plugin my-plugin --author "Your Name" < /dev/null

--description and --author set the defaults their prompts start from, so they are also what a non-interactive run writes.

Options

pnpm create @object-ui/plugin my-plugin --description "My awesome plugin" --author "Your Name"

After Creation

  1. Navigate to the plugin directory:

    cd packages/plugin-my-plugin
  2. Install dependencies:

    pnpm install
  3. Build the plugin:

    pnpm build
  4. Run tests:

    pnpm test

Links

License

MIT — see LICENSE.