Skip to main content
The moon generate <id> (or moon g) command will generate code (files and folders) from a pre-defined template of the same name, using an interactive series of prompts. Templates are located based on the generator.templates setting.
# Generate code from a template
$ moon generate npm-package

# Generate code from a template to a target directory
$ moon generate npm-package --to ./packages/example

# Generate code while declaring custom variable values
$ moon generate npm-package --to ./packages/example -- --name "@company/example"

# Create a new template
$ moon generate react-app --template
View the official code generation guide for a more in-depth example of how to utilize this command.

Arguments

<id>

ID of the template to generate. If not provided, you will be prompted to select from available templates.

[-- <vars>]

Additional arguments to override default variable values. These are passed after -- and use the format --variableName value. Examples:
# Pass string variable
$ moon generate app -- --name "my-app"

# Pass boolean variable
$ moon generate app -- --useTypeScript

# Pass number variable
$ moon generate app -- --port 3000

# Pass array variable (can be repeated)
$ moon generate app -- --features auth --features api

Options

--to <path>

Destination to write files to, relative from the current working directory. If not defined, will be prompted during generation.
$ moon generate npm-package --to ./packages/example

--defaults

Use the default value of all variables instead of prompting the user. Useful for non-interactive environments like CI/CD.
$ moon generate npm-package --defaults

--dry-run

Run entire generator process without writing files. This is useful for testing template configuration and variable substitution.
$ moon generate npm-package --dry-run

--force

Force overwrite any existing files at the destination without prompting.
$ moon generate npm-package --force

--template

Create a new template with the provided name. This will scaffold the basic structure for a new template.
$ moon generate my-template --template

Examples

Basic generation

$ moon generate npm-package
Output:
npm-package ──────────────────────────────────────────────────────────────

  NPM Package (dry run)
  Generate a new npm package

✔ Which template to generate? › npm-package
✔ Where to generate code to? … packages/example

created --➤ packages/example/package.json
created --➤ packages/example/README.md
created --➤ packages/example/src/index.ts

Generate with variables

$ moon generate npm-package --to ./packages/example -- --name "@company/example" --description "Example package"

Configuration

Build docs developers (and LLMs) love