Newer
Older
pixi.js / scripts / header.js
var fs = require('fs');
var through = require('through2');

/**
 * Plugin for browserify to add custom header
 * @param {browserify} browserify Instance of browserify
 * @param {Object} options Options
 */
module.exports = function(browserify, options) {

    var packageInfo = require('../package.json');
    var substitute = {
        date: (new Date()).toString(),
        name: packageInfo.name,
        version: packageInfo.version
    };
    var header = fs.readFileSync(options.file, 'utf8');

    // Subtitute values in the header template
    for(var i in substitute) {
        header = header.replace(
            new RegExp('\\$\\{'+i+'\\}', 'g'),
            substitute[i]
        );
    }
    var createStream = function () {
        var firstChunk = true;
        var stream = through.obj(function (buf, enc, next) {
            if (firstChunk) {
                /*  insert the header comment as the first chunk  */
                this.push(new Buffer(header));
                firstChunk = false;
            }
            this.push(buf);
            next();
        });
        stream.label = 'header';
        return stream;
    };

    //  hook into the bundle generation pipeline of Browserify
    browserify.pipeline.get('wrap').push(createStream());
    browserify.on('reset', function () {
        browserify.pipeline.get('wrap').push(createStream());
    });
};