Skip to content
Simplified interface to {dust} and file templates for Node.js
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

{dust} with fs


This is a simplified interface to use templates from filesystem with {dust} using Node.js.

Installation for Node.js

Simplest way to install is to use npm, just simply npm install dustfs. This will also install {dust} from npm.


MIT-style license, see INSTALL.txt.

Example 1 - Single template

File templates/hello.dust:

Hello {name}!

File hello.js:

var dustfs = require('dustfs');
dustfs.dirs('templates'); // Read templates from this directory
dustfs.render('hello.dust', {'name':'Captain Jack'}, function(err, out) {
	if(err) console.log('Error: '+err);
	else console.log(out);

Results for node hello.js:

Hello Captain Jack!

Example 2 - Multiple templates

File templates/layout.dust:

<div id="header">
<div id="content">
Default content.

File templates/partial.dust:


Hello, {name}!

This is our own content.

File partial.js:

var dustfs = require('dustfs');
dustfs.debug(true);       // Enable optional debug using console.log
dustfs.dirs('templates'); // Read templates from that sub directory
dustfs.render('partial.dust', {'name':'Captain Jack'}, function(err, out) {
	if(err) console.log('Error: '+err);
	else console.log('Output:\n' + out);

Results for node partial.js:

[dustfs] [partial.dust] Waiting until directory loading is done before rendering...
[dustfs] [layout.dust] Template compiled from templates/layout.dust
[dustfs] [layout.dust] Template loaded: templates/layout.dust
[dustfs] [hello.dust] Template compiled from templates/hello.dust
[dustfs] [hello.dust] Template loaded: templates/hello.dust
[dustfs] [partial.dust] Template compiled from templates/partial.dust
[dustfs] [partial.dust] Template loaded: templates/partial.dust
[dustfs] [partial.dust] Loading done! Let's render!
[dustfs] [partial.dust] Rendering template...
<body><div id="header">Hello, Captain Jack!</div><div id="content">This is our own content.</div></body>


dustfs.dirs(directory) will compile and load all .dust files from the directory.

There is multiple ways to call dustfs.dirs.

Full syntax is: [returns EventEmiter] dustfs.dirs(dir[, dir2[, ...[, callback]]])

Note that using callbacks is not required since dustfs.render() will also wait for any ongoing loading.

Call to dustfs.dirs(dir[, dir2[, ...]]) returns an EventEmitter which can be used to catch errors or to catch when the loading has ended:

var loading = dustfs.dirs('templates', 'docroot');
loading.on('error', function(err) {
	console.log('Error: '+err);
loading.on('end', function() {
	console.log('Loading done!');

Call to dustfs.dirs(dir[, callback]) is a second way to handle events:

var loading = dustfs.dirs('templates', function(err) {
	if(err) console.log('Errors: ' + err);
	else console.log('Loading done!');


Call to dustfs.render(name, context, callback) will render the named template with provided context, and after that execute the callback with results:

dustfs.render('partial.dust', {'name':'Captain Jack'}, function(err, out) {
	if(err) console.log('Error: '+err);
	else console.log('Output:\n' + out);
You can’t perform that action at this time.