npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

hbsmon

v1.0.4

Published

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

Downloads

1

Readme

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 how you to monitor changes to a .hbs template file and run a script when the template file changes.

  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.