ioncakephper / hbsmon

Monitor .hbs (Handlebar) file for changes and execute specified .js file

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

hbsmon

Monitor .hbs (Handlebar) file for changes and execute specified .js

Installation

Install the package globally so you can use the hbsmon CLI command:

npm i -g hbsmon

Usage

Get help

hbsmon -h

Get version

hbsmon -V

Monitor .hbs file, run script file with template basename

hbsmon template
  • Monitor changes of template.hbs file and run template.js script
  • Template default extension: .hbs
  • Default JavaScript default extension .js
  • Default Javascript filename: template file basename

Monitor .hbs file, run specified script

hbsmon template create-page
  • Monitor changes of template.hbs file
  • Template default extension: .hbs
  • Default JavaScript default extension .js
  • Run javacript file: create-page.js

Quick demo

This example shows you how to monitor changes to a .hbs template file and run a script when the template file changes.

  • You will create an .hbs template file to monitor and a Javascript .js file to execute when the template file changes. In this example, the javascript creates result.html -- it uses the template.
  • Next, you will invoke hbsmon CLI command with template and javascript filenames as arguments.
  • Next, you open the template and result.html in your IDE.
  • Edit the template file, and notice the result.html file -- it has the update template content.

Follow this steps:

  1. Create a template.hbs file: this is the file template file you will monitor for changes
<body>
    <ul>
        {{#each items as |item|}}
        <li>
            <a href="{{{item.url}}}" title="">{{{item.text}}}</a>
        </li>
        {{/each}}
    </ul>
</body>
  1. Create a create.js file: this is the script you will invoke when template.hbs file changes.
const Handlebars = require('handlebars')
const fs = require('fs')

function render(source, data = {}) {
    let template = Handlebars.compile(source);
    return template(data);
}

let items = "First Second".split(/\s+/).map((label, idx) => {
    return {
        text: `${label} ${idx+1}`,
        url: `#`,
    }
})
let source = fs.readFileSync(`template.hbs`, "utf-8")
let output = render(source, {items: items})
fs.writeFileSync('result.html', output, "utf-8");
console.log(source);
  1. Install hbsmon globally, if not already installed.
npm i -g hbsmon

To check hbsmon is already installed, type hbsmon -V at the command prompt.

  1. Run hbsmon in a terminal
hbsmon template create
  1. In your IDE, open template.hbs and result.html

As you type changes to your template, the result.html also changes. When hbsmon detects a change in the .hbs file, it invokes the change.js script, which uses the .hbs file to create the result.html file.

About

Monitor .hbs (Handlebar) file for changes and execute specified .js file

License:MIT License


Languages

Language:HTML 40.9%Language:Handlebars 40.4%Language:JavaScript 18.6%