build 1.51 KB
#!/usr/bin/env node

var Codesurgeon = require('codesurgeon').Codesurgeon;
var surgeon = new Codesurgeon;

var path    = require('path');

var root    = path.join(__dirname, '..');
var lib     = path.join(root, 'lib', 'broadway');

//
// Distill and package the browser version.
//
surgeon
  //
  .configure({ 
    package: root + '/package.json',
    owner: 'Nodejitsu, Inc (Using Codesurgeon).'
  })
  .read(
    path.join(root, 'node_modules', 'eventemitter2', 'lib', 'eventemitter2.js'),
    path.join(lib, 'browser.js')
  )
  //
  // we want everything so far. specify extract with no 
  // parameters to get everything into the output buffer.
  //
  .extract() 
  //
  // clear the input so far, but don't clear the output.
  //
  .clear('inputs') 
  //
  // read the `app.js` file
  //
  .read(
    path.join(lib, 'app.js')
  )
  //
  // the current input buffer contains stuff that we dont
  // want in the browser build, so let's cherry pick from
  // the buffer.
  //
  .extract(
    'App.prototype.init',
    'App.prototype.use',
    'App.prototype.remove',
    'App.prototype.inspect'
  )
  //
  // wrap everything that is in the current buffer with a
  // closure so that we dont get any collisions with other
  // libraries
  //
  .wrap()
  //
  // write the debuggable version of the file. This file will
  // get renamed to include the version from the package.json
  //
  .write(root + '/build/broadway.js')
  //
  // now lets make a minified version for production use.
  //
  .uglify()
  .write(root + '/build/broadway.min.js')
;