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

generator-extend

v0.0.0

Published

A generator for Yeoman

Readme

Extendable Generator - Manual

Maintainer: Simon Fan

Based on generator-generator

Usage

Install generator-extendable-generator:

npm install -g generator-extendable-generator

Make a new directory, and cd into it:

mkdir my-new-generator && cd $_

Run:

yo extendable-generator

yoextensions.json

This file describes metadata on your generator's extensions and file locations.

packageJsonTemplate

Path to the package.json template file (the one that will be processed by lodash and copied to the generated project's root). As of 0.1.0, the package.json template file has to be a valid JSON string.

Extendable-generator sets the package.json template's devDependencies property, so that all the extended generators are installed inside the scaffolded project's node_modules folder (local installation).

extensions

Object that describes all extensions required by the generator.

Keys

Follow the $generatorName[:$subgeneratorName] format.

If both $generatorName and $subgeneratorName (e.g., generator:app, backbone:model) are specified in the key string: the generator being extended will have a subgenerator named '$subgeneratorName' which does whatever the original subgenerator did.

If only $generatorName is specified (e.g., backbone, angular): $subgeneratorName will default to 'app', resulting in $generatorName:app.

Values

Object: describes the extension(s). Takes the following keys: generator: The name of the generator from which functionality will be inherited. subgenerators: {String} Single subgenerator names to be inherited. {Array} Multiple subgenerator names to be inherited. aliases: object that maps generator and subgenerator names to their aliased names.

{
    "generator": "generatorName",
    "subgenerators": ["subgeneratorName","anotherSubGeneratorName"],
    "version": "semverVersion",
    "aliases": {
        "generatorName": "generatorAliasName",
        "subgeneratorName": "subgenenratorAliasName",
        "anotherSubgeneratorName": "anotherSubgeneratorAliasName"
    }
}

String: semver, just as package.json dependencies property.

Extending generators: via yoextensions.json

Edit the yoextensions.json at the root of your new generator and run

yo extendable-generator:extend

Extending generators: via CLI

At the root of your new generator, run

yo extendable-generator:extend %generatorName:%subgeneratorName

Example workflow

Gotchas

Extending app subgenerator

Whenever the app subgenerator, the default app subgenerator's index.js file is overwritten by a proxy-generator that invokes the other generator.

Under the hood

Proxy Generator

lib/yo-extensions.js