Skip to content

Instantly share code, notes, and snippets.

@caspian311
Last active December 23, 2015 05:29
Show Gist options
  • Save caspian311/6587767 to your computer and use it in GitHub Desktop.
Save caspian311/6587767 to your computer and use it in GitHub Desktop.
/*
Usage:
var compile = require('build-utils').compile;
compile('less-src', 'public/css', function(lessFile, destFile) {
var cssFile = destFile.substr(0, destFile.indexOf('.less')) + '.css';
run('./node_module/.bin/lessc' + lessFile + ' > ' + cssFile);
});
*/
var fs = require('fs');
var walk = function(dir, done) {
var results = [];
fs.readdir(dir, function(err, list) {
if (err) {
return done(err);
}
var pending = list.length;
if (!pending) {
return done(null, results);
}
list.forEach(function(file) {
file = dir + '/' + file;
fs.stat(file, function(err, stat) {
if (stat && stat.isDirectory()) {
walk(file, function(err, res) {
results = results.concat(res);
if (!--pending) {
done(null, results);
}
});
} else {
if (file.indexOf('.swp') == -1) {
results.push(file);
}
if (!--pending) done(null, results);
}
});
});
});
};
var compile = function(srcDir, destDir, callback) {
walk(srcDir, function(_, files) {
files.forEach(function (srcFile) {
var destFile = destDir + (srcFile.substr(srcDir.length, srcFile.length));
callback(srcFile, destFile);
});
});
};
module.exports = { compile: compile, walk: walk };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment