Skip to content

Instantly share code, notes, and snippets.

@alonronin
Created November 19, 2014 15:52
Show Gist options
  • Save alonronin/e4b5840d58042078bb34 to your computer and use it in GitHub Desktop.
Save alonronin/e4b5840d58042078bb34 to your computer and use it in GitHub Desktop.
Compile dust folder strucure
var dust = require('dustjs-linkedin');
var diveSync = require("diveSync");
var path = require('path');
var fs = require('fs');
var dir = path.join(__dirname, 'public', 'templates');
var output = path.join(__dirname, 'public', 'js', 'templates.js');
var writer = fs.createWriteStream(output);
var files = [];
diveSync(dir, {
recursive: true, // - If set to false, this will ignore subdirectories.
all: false, // - If set to true, this will show "dot files" and
// files in "dot directories", e.g. ".gitinore" or
// ".git/HEAD".
directories: false, // - If set to true, this will show directories, too.
filter: function filter(file, dir) {
if(!dir) return path.extname(file) === '.dust';
return true;
}
// - Function that returns true for all paths that should
// not be ignored.
}, function(err, file) {
if (err) throw err;
var dir_name = path.dirname(file).replace(dir, '');
var file_name = path.basename(file, '.dust');
var name = dir_name ? dir_name + '/' + file_name : file_name;
var template = fs.readFileSync(file, 'utf8');
files.push(dust.compile(template, name));
});
fs.writeFileSync(output, files.join('\n'));
console.log('%d dust templates compiled.', files.length);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment