---
name: "mustache"
section: "1"
platform: "linux"
package: "ruby-mustache"
version: "1.1.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/mustache"
---

# mustache(1)

Mustache processor

## NAME

**mustache** - Mustache processor

## SYNOPSIS

```
mustache <YAML> <FILE>
mustache --compile <FILE>
mustache --tokens <FILE>
```

## DESCRIPTION

Mustache is a logic-less templating system for HTML, config files, anything.

The **mustache** command processes a Mustache template preceded by YAML frontmatter from standard input and prints one or more documents to standard output.

YAML frontmatter begins with **---** on a single line, followed by YAML, ending with another **---** on a single line, e.g.

-

  ```
  ---
  names: [ {name: chris}, {name: mark}, {name: scott} ]
  ---
  ```

-

  If you are unfamiliar with YAML, it is a superset of JSON. Valid JSON should work fine.

After the frontmatter should come any valid Mustache template. See [mustache(5)](/mustache/5.md) for an overview of Mustache templates.

For example:

-

  ```
  {{#names}}
    Hi {{name}}!
  {{/names}}
  ```

-

  Now let´s combine them.

-

  ```
  $ cat data.yml
  ---
  names: [ {name: chris}, {name: mark}, {name: scott} ]
  ---
  $ cat template.mustache
  {{#names}}
    Hi {{name}}!
  {{/names}}
  $ mustache data.yml template.mustache
  Hi chris!
  Hi mark!
  Hi scott!
  ```

-

  If you provide multiple YAML documents (as delimited by **---**), your template will be rendered multiple times. Like a mail merge.

For example:

-

  ```
  $ cat data.yml
  ---
  name: chris
  ---
  name: mark
  ---
  name: scott
  ---
  $ cat template.mustache
  Hi {{name}}!
  $ mustache data.yml template.mustache
  Hi chris!
  Hi mark!
  Hi scott!
  ```

-

  ## OPTIONS

By default **mustache** will try to render a Mustache template using the YAML frontmatter you provide. It can do a few other things, however.

- **-c**, **--compile**

  Print the compiled Ruby version of a given template. This is the code that is actually used when rendering a template into a string. Useful for debugging but only if you are familiar with Mustache´s internals.

- **-t**, **--tokens**

  Print the tokenized form of a given Mustache template. This can be used to understand how Mustache parses a template. The tokens are handed to a generator which compiles them into a Ruby string. Syntax errors and confused tags, therefore, can probably be identified by examining the tokens produced.

## INSTALLATION

If you have RubyGems installed:

-

  ```
  gem install mustache
  ```

-

  ## EXAMPLES

```
$ mustache data.yml template.mustache
$ cat data.yml | mustache - template.mustache
$ mustache -c template.mustache
$ cat <<data | ruby mustache - template.mustache
---
name: Bob
age: 30
---
data
```

## COPYRIGHT

Mustache is Copyright (C) 2009 Chris Wanstrath

Original CTemplate by Google

## SEE ALSO

[mustache(5)](/mustache/5.md), [gem(1)](/gem/1.md), *http://mustache.github.io/*
