JSPM

  • Created
  • Published
  • Downloads 24953
  • Score
    100M100P100Q126540F
  • License MIT

Fast, composable, highly extendable project generator with a user-friendly and expressive API.

Package Exports

  • generate

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (generate) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

generate NPM version NPM downloads Build Status

Fast, composable, highly extendable project generator with a user-friendly and expressive API.

You might also be interested in verb.

TOC

(TOC generated by verb using markdown-toc)

Install

Install globally with npm

$ npm install -g generate

What is generate?

Generate is a fast, highly pluggable project generator, with a user-friendly CLI and an expressive API, and can be used as an alternative to Google's yeoman.

Feature Highlights

  • Built on assemble-core, so all methods from base, assemble, and templates are exposed on generate's API.
  • Supports gulp and assemble plugins
  • Runs local or globally-installed generators
  • Runs sub-generators using simple dot-notation. Supports any level of nesting!
  • Runs gulp-style "tasks" and uses some of the same underlying libraries as gulp
  • Generators can extend and use other generators
  • Generators, sub-generators and tasks can be run by command line, API, or both.
  • Runs tasks from any generator or sub-generator, programmatically or via CLI
  • Easy to add functionality and features to generate using via plugins
  • Supports any node.js template engine, including consolidate
  • First class support for template collections, including pagination, sorting, groups, and more.
  • Supports middleware that can be run on specific files or template collections, at specific points during the build cycle, such as onLoad, preRender, postRender, etc.

Generate is also well-tested, with close to 1200 unit tests.

Usage

var Generate = require('generate');
var generator = new Generate();

generator.register('one', function(app) {
  app.task('default', function(cb) {
    // do stuff
    cb();
  });
});

generator.register('two', function(app) {
  app.task('default', function(cb) {
    // do stuff
    cb();
  });

  app.task('foo', function(cb) {
    // do stuff
    cb();
  });

  app.task('bar', function(cb) {
    // do stuff
    cb();
  });

  // register another generator as a sub-generator
  app.register('one');

  // register a custom sub-generator
  app.register('qux', function(qux) {
    app.task('default', function(cb) {
      // do stuff
      cb();
    });
  });
});

// run the `default` task on generator `one`
generator.generate('one', function(err) {
  if (err) throw err;
});

// run the `bar` task on generator `two`
generator.generate('two', 'bar', function(err) {
  if (err) throw err;
});

// run the `one` sub-generator in generator "two"
// (sub-generators can be infinitely nested!)
generator.generate('two.one', function(err) {
  if (err) throw err;
});

Quickstart

1. generator.js

Create a generator.js file, and add the following code:

module.exports = function(app) {
  app.task('default', function(cb) {
    console.log('task > default');
    cb();
  });

  app.task('foo', function(cb) {
    console.log('task > foo');
    cb();
  });
};

2. Run gen

In the command line run:

  • gen to execute the default task
  • gen foo to execute the foo task

API

Generate

Create an instance of Generate with the given options

Params

  • options {Object}: Settings to initialize with.

Example

var Generate = require('generate');
var generate = new Generate();

.ask

Async helper that prompts the user and populates a template with the answer.

Params

  • app {Object}
  • returns {Function}: Returns the helper function

Example

<%= ask('author.name') %>

You might also be interested in these projects:

  • assemble: Assemble is a powerful, extendable and easy to use static site generator for node.js. Used… more | homepage
  • base: base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… more | homepage
  • update: Easily keep anything in your project up-to-date by installing the updaters you want to use… more | homepage
  • verb: Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… more | homepage

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Building docs

Generate readme and API documentation with verb:

$ npm install verb && npm run docs

Or, if verb is installed globally:

$ verb

Running tests

Install dev dependencies:

$ npm install -d && npm test

Author

Jon Schlinkert

License

Copyright © 2016, Jon Schlinkert. Released under the MIT license.


This file was generated by verb, v0.9.0, on April 26, 2016.