# generator-extend

> A generator for Yeoman

Latest version **0.0.0** (published 2013-11-14) · 0 weekly downloads

## Install

```sh
npm install generator-extend
pnpm add generator-extend
yarn add generator-extend
bun add generator-extend
```

## Health

**Score 5/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: insecure dependencies; abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.0 |
| Published | 2013-11-14 |
| First published | 2013-11-14 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.8.0 |
| Dependencies | 7 |
| Known vulnerabilities | 0 (+8 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | simonfan |
| Keywords | yeoman-generator |

## Links

- npm: https://www.npmjs.com/package/generator-extend
- Repository: https://github.com/simonfan/generator-extend
- Issues: https://github.com/simonfan/generator-extend/issues
- npm.io page: https://npm.io/package/generator-extend

## Dependencies (7)

- [q](https://npm.io/package/q.md) ~0.9.7
- [chalk](https://npm.io/package/chalk.md) ~0.3.0
- [grunt](https://npm.io/package/grunt.md) ~0.4.1
- [github](https://npm.io/package/github.md) ~0.1.12
- [lodash](https://npm.io/package/lodash.md) ~2.2.1
- [json-file](https://npm.io/package/json-file.md) git://github.com/simonfan/json-file.git
- [yeoman-generator](https://npm.io/package/yeoman-generator.md) ~0.13.0

## Recent versions

- 0.0.0 (latest) — 2013-11-14

## README

# Extendable Generator - Manual

Maintainer: [Simon Fan](https://github.com/simonfan)

Based on [generator-generator](https://github.com/yeoman/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

---
_Source: https://npm.io/package/generator-extend · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
