#!/usr/bin/env node var minimist = require('minimist'); var browserify = require('browserify'); var source = require('vinyl-source-stream'); var buffer = require('vinyl-buffer'); var vfs = require('vinyl-fs'); var uglify = require('gulp-uglify'); var empty = require('gulp-empty'); var sourcemaps = require('gulp-sourcemaps'); var path = require('path'); // Get the commandline arguments var args = minimist(process.argv.slice(2), { alias: { e: 'exclude' } }); var bundler = browserify({ entries: './src/', debug: true }); // Get the license for the header var license = path.join(__dirname, 'license.js'); bundler.plugin('./scripts/header.js', { file: license }); // Exclude certain modules if (args.exclude) { var excludes = args.exclude; if (!Array.isArray(excludes)) { excludes = [excludes]; } excludes.forEach(function(exclude){ try { bundler.ignore(require.resolve('../src/' + exclude)); console.log('> Ignoring module \'%s\'', exclude); } catch(e){ console.log('> ERROR: Module not found for \'%s\'', exclude); } }); console.log(''); } function bundle(output, debug) { bundler.bundle() .pipe(source(output)) .pipe(buffer()) .pipe(sourcemaps.init({loadMaps: true})) .pipe(debug ? empty() : uglify({ mangle: true, preserveComments: function(node, comment) { if (/\@preserve/m.test(comment.value)) { return true; } } })) .pipe(sourcemaps.write('./')) .pipe(vfs.dest('./bin/')); } // Build the bundles bundle('pixi.js', true); bundle('pixi.min.js', false);