Source: apc-static/task/worker/generate_index_less_file.js

/**
 * Generate _index.less files.
 * @function task.worker.generateIndexLessFile
 * @param {object} config - Task configuration.
 * @param {string} config.dir - Directory name.
 * @param {function} callback - Callback when done.
 * @author Taka Okunishi
 *
 */
var path = require('path'),
    fs = require('fs'),
    lib = require('../../lib'),
    file = lib.file,
    debug = require('./_debug');
exports = module.exports = function (config, callback) {
    var dir = path.resolve(config.dir);
    exports._loadIndexLessTmpl(function (err, tmpl) {
        if (err) {
            callback(err);
            return;
        }
        fs.readdir(dir, function (err, filenames) {
            if (err) {
                callback(err);
                return;
            }
            var dest = path.resolve(dir, '_index.less');
            var content = tmpl({
                imports: filenames.filter(function (filename) {
                    return filename !== path.basename(dest);
                }),
                dirname: path.basename(dir)
            });
            file.writeReadonlyFile(dest, content, function (err) {
                if (!err) {
                    debug.didCreateFile(dest);
                }
                callback(err);
            });
        });

    });
};

exports._loadIndexLessTmpl = function (callback) {
    var filename = path.resolve(__dirname, '../../tmpl/less/_index.less.hbs');
    file.loadHbsTmpl(filename, callback);
};