hygen
Version:
The scalable code generator that saves you time.
116 lines (81 loc) • 3.24 kB
Markdown
---
title: Quick Start
doc: 1
section: 1
category: "tech"
type: "doc"
---
Install `hygen`:
```
$ npm i -g hygen
```
To use a generator, we supply a `GENERATOR ACTION` pair like so (here `mailer` and `new` are examples).
```
$ hygen mailer new
| ^----- action
`------------ generator
```
Here's a quick run-down to get to your own generator:
```bash
$ hygen init self
$ hygen generator new --name awesome-generator
$ hygen awesome-generator new --name hello
```
To see the `generator` help, you could always do:
```bash
$ hygen generator help
Loaded templates: _templates
help:
hygen generator new --name [NAME] --action [ACTION]
hygen generator with-prompt --name [NAME] --action [ACTION]
```
Congratz! you've made a new generator called `awesome-generator`!
Let's walk through what we just did.
[[info]]
| You can also install `hygen` from Homebrew or download a standalone binary. For more, see [standalone](/standalone).
## Bootstrapping Your Project
Use `hygen init self` to start using it in your own project. `hygen` comes with two pre-built generators that helps you build your own - although it was built to ease the boilerplate fatigue for React, Redux, and Node.js it can be use for any technology really.
```yaml{2}
$ cd your-project
$ hygen init self
Loaded templates: src/templates
added: _templates/generator/with-prompt/hello.ejs.t
added: _templates/generator/with-prompt/prompt.ejs.t
added: _templates/generator/new/hello.ejs.t
```
This creates a project-local `_templates` folder for you at your source root with two helper generators that saves you time:
* `hygen generator new --name generatorName` - builds a new generator for you
* `hygen with-prompt new --name generatorName` - the same as before, only this one will be prompt driven.
[[info]]
|###### Template Locality
|On multi-team projects, each team can have their own templates right there in the shared repo.
Still in your project root, let's create a new generator now:
```yaml
$ hygen generator new --name mygen
Loaded templates: _templates
added: _templates/mygen/new/hello.ejs.t
```
And let's use it:
```yaml{4}
$ hygen mygen new
Loaded templates: _templates
added: app/hello.js
```
[[info]]
|###### Did You Notice?
|Instead of bundling the `hygen generator new` command in `hygen`, we chose to _copy_ it to your local templates folder.
|
|
|In this way you can even tweak the way `hygen` generates new generators. It scales to a set up with different teams, each with its own preference.
That's it! we've done a basic walkthrough of `hygen`. Next up is a detailed overview of [templates](/templates) and [generators](/generators).
## Invoking Generators
There are more ways to play with a generator after you've built it:
```perl
# generate all files, with a 'name' variable
$ hygen example-prompt new --name reporter
# generate one specific file, picked up based on the substring 'mailer'
$ hygen example-prompt new:mailer --name reporter
# generate all resources that correspond to a regular expression
$ hygen example-prompt 'new:.*html' --name reporter
```
You made it to the end! nice! Now check out [templates](/templates) and [generators](/generators).