What is yeoman-generator?
Yeoman Generator is a scaffolding tool for building web applications. It provides a powerful and flexible way to create and manage project templates, allowing developers to quickly set up new projects with a consistent structure and configuration.
What are yeoman-generator's main functionalities?
Creating a Basic Generator
This feature allows you to create a basic Yeoman generator that copies a template file to the destination directory. The `copyTpl` method is used to process the template with provided data.
const Generator = require('yeoman-generator');
module.exports = class extends Generator {
writing() {
this.fs.copyTpl(
this.templatePath('index.html'),
this.destinationPath('index.html'),
{ title: 'Templated HTML' }
);
}
};
Prompting User Input
This feature allows you to prompt the user for input during the generator's execution. The `prompt` method is used to ask questions and store the answers.
const Generator = require('yeoman-generator');
module.exports = class extends Generator {
async prompting() {
this.answers = await this.prompt([{
type: 'input',
name: 'name',
message: 'Your project name',
default: this.appname // Default to current folder name
}]);
}
};
Composing with Other Generators
This feature allows you to compose your generator with other generators. The `composeWith` method is used to integrate another generator into your own.
const Generator = require('yeoman-generator');
module.exports = class extends Generator {
initializing() {
this.composeWith(require.resolve('generator-other/generators/app'));
}
};
Other packages similar to yeoman-generator
plop
Plop is a micro-generator framework that makes it easy to create code generators that are specific to your project. It is simpler and more lightweight compared to Yeoman Generator, focusing on generating files based on templates and user prompts.
hygen
Hygen is a fast and lightweight code generator that is designed to be easy to use and integrate into existing projects. It emphasizes simplicity and speed, making it a good alternative to Yeoman Generator for smaller or more focused tasks.
slush
Slush is a scaffolding tool that uses Gulp for its build system. It allows you to create and run generators similar to Yeoman Generator but leverages the Gulp ecosystem for task automation and file manipulation.
Generator
A Rails-inspired generator system that provides scaffolding for your apps.
Getting Started
If you're interested in writing your own Yeoman generator we recommend reading the official documentation.
There are typically two types of generators - simple boilerplate 'copiers' and more advanced generators which can use custom prompts, remote dependencies, wiring and much more.
The docs cover how to create generators from scratch as well as recommending command-line generators for making other generators.
Testing generators
There is currently no formal infrastructure for testing generators, however you may find our mocha generator for custom generators useful.
Officially maintained generators