mustache-cli

Mustache's CLI interface.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
mustache-cli
2.3.23 years ago7 years agoMinified + gzip package size for mustache-cli in KB

Readme

mustache-cli

Description

Mustache's CLI interface.

Usage

npm install mustache-cli --global
mustache-cli -h

./tpl/layout.mustache
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>{{title}}</title>
  </head>
  <body>
    <div>
      {{>tpl}}
    </div>
  </body>
</html>

./tpl/page.mustache
<h1>{{title}}</h1>
{{>content}}

./conf/index.json
{
    "__root": "layout.mustache",
    "__tpl": "page.mustache",
    "_content": "<strong>Hello World</strong>",
    "title": "Home"
}

./conf/multi.js
const output = require('mustache-cli').output

module.exports = function(opts){
  return {
    __file: 'multi/index.html',
    __root: 'layout.mustache',
    _tpl: '{{{ html }}}',
    title: 'Multi',
    html: function(){
      const page1 = output({
        __root: 'page.mustache',
        _content: '<p>page1</p>',
        title: this.title,
      }, opts)
      const page2 = output({
        __root: 'page.mustache',
        _content: '<p>page2</p>',
        title: this.title,
      }, opts)
      return page1 + page2
    }
  }
}

mustache-cli -p --color ./

./out/index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Home</title>
  </head>
  <body>
    <div>
      <h1>Home</h1>
      <strong>Hello World</strong>
    </div>
  </body>
</html>

./out/multi/index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Multi</title>
  </head>
  <body>
    <div>
      <h1>Multi</h1>
      <p>page1</p>
      <h1>Multi</h1>
      <p>page2</p>
    </div>
  </body>
</html>

Node

import express from 'express'
import {renderFile} from 'mustache-cli/lib/express'

const app = express()

app.set('views', 'src/mustache/tpl')
app.set('view engine', 'mustache')
app.engine('mustache', renderFile({
  baseDir: 'src/mustache',
}))

app.use((req, res) => {
  res.render('layout', {
    title: 'Home',
  })
})

app.listen(3000)

API

output(config[, options])

options:
  • baseDir

(Default: .)
Set the root dir for mustache.
  • confDir

(Default: ./conf)
Set the config dir, include js or json files.
  • tplDir

(Default: ./tpl)
Set the template dir, include mustache or html files.
  • outDir

(Default: ./out)
Set the output dir.
  • rootTpl

(Default: __root)
Set the key of a main template file path.
  • outFile

(Default: __file, Since: 2.2.0+)
Set the key of a output file path.
  • partialPrefix

(Default: _)
Set the prefix, represent a partial.
```html // HTML
{{>nav}}

// JSON {
_nav: '<nav>...</nav>',
...
} ```
  • tplPrefix

(Default: __)
Set the prefix, represent a template file path for a partial.
```html // HTML
{{>form}}

// JSON {
__form: 'form.mustache',
...
} ```
  • forceMinify

(Default: __minify, Since: 2.3.0+)
Set the key of minifier, The possible value is true or false, for config file.
  • forcePretty

(Default: __pretty, Since: 2.3.0+)
Set the key of pretty, The possible value is true or false, for config file.
  • ext

(Default: html)
Set the extname of output files.
  • render

(Default: mustache.render)
Set render function.
  • print

Set log output function.
  • onError

The callback is called when an error occurs.
  • color

(Default: false)
Print color text.
  • minify

(Default: false)
To minify HTML.
  • pretty

(Default: false)
To pretty HTML.
  • watch

(Default: false)
To watch working files.
  • config

(Deprecated)

setGlobalData(data)

Set default data.

getGlobalData()

Get default data.

License

MIT