mustache-file

Read mustache files and partials from disk and pass them to mustache

Usage no npm install needed!

<script type="module">
  import mustacheFile from 'https://cdn.skypack.dev/mustache-file';
</script>

README

mustache-file

Read mustache files and partials from disk.

This is simple wrapper around the standard mustache templating package.

This module is designed to read its template files from disk, as well as any partials referred to therein. It is fully async and is either passed a callback or it returns a promise.

Mustache is a logic-less template syntax. It can be used for HTML, config files, source code - anything. It works by expanding tags in a template using values provided in a hash or object.

For a language-agnostic overview of mustache's template syntax, see the mustache(5) manpage.

Install

npm install mustache-file

Usage

Mustache = require('mustache-file');

This returns a Mustache class that can be instantiated with new.

must = new Mustache(options);

Create a new Mustache object. Options is an object containing:

extension:

The extension to add to the template names passed to render(). If extension is null, nothing will be added to the filename. There is no need for the leading . on the extension. The default is "mustache".

path:

This is the path to look for the template and any partials. It can either be a string or an array of strings. If it is an array, the paths will be searched in order, both for the original template and for each partial. Relative paths are searched from the current working directory.

If it is not passed, templates will be loaded from the current working directory.

Example:

must = new Mustache({
    extension: 'html',
    path: [ 'templates/special', 'templates' ]
});

To render the template either pass a callback or (if no callback is passed) render() will return a promise.

With a callback

must = new Mustache({
    must.render(template, context, function(err, html) {
        if (err) throw err;
        // Send html to the browser, for example
    });

As a promise

must = new Mustache({
    must.render(template, context)
    .then(function(html) {
        // Send html to the browser, for example
    })
    .catch(function(err) {
        throw err;
    });

Mustache as a command-line utility

Starting from version 2.0.0, mustache-file contains a mustache executable. You can make this globally available by:

npm install -g mustache-file

The syntax is:

mustache [options] template.mustache [ context.json ]
  options:
    -o | --output:    Output path for the rendered text
                      (STDOUT if not specified)
    -p | --pretty:    Reformat the html output
    -e | --extension: override the default extension of .mustache
    -v | --version:   Print version and exit
    -h | --help:      This help list

If no context is required, context.json can be omitted. Also, the suffixes .mustache and .json will be added automatically if omitted.

It is possible to override the .mustache suffix with the --extension switch. This will add the correct extension for the main file and all the partials. For example:

mustache --extension 'html' index

If no output file is specified, output will be to stdout.

Any problems?

Any issues or comments would be appreciated at Github.