build 1.88 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', 'director');

//
// Distill and package the browser version.
//
surgeon
  //
  .configure({
    package: root + '/package.json',
    owner: 'Charlie Robbins, Paolo Fragomeni & the Contributors (Using Codesurgeon).',
    noVersion: true
  })
  .read(
    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 `router.js` file
  //
  .read(
    path.join(lib, 'router.js')
  )
  //
  // The current input buffer contains stuff that we dont
  // want in the browser build, so let's cherry pick from
  // the buffer.
  //
  .extract(
    '_every',
    '_flatten',
    '_asyncEverySeries',
    'paramifyString',
    'regifyString',
    'terminator',
    'QUERY_SEPARATOR',
    'Router.prototype.configure',
    'Router.prototype.param',
    'Router.prototype.on',
    'Router.prototype.path',
    'Router.prototype.dispatch',
    'Router.prototype.invoke',
    'Router.prototype.traverse',
    'Router.prototype.insert',
    'Router.prototype.insertEx',
    'Router.prototype.extend',
    'Router.prototype.runlist',
    'Router.prototype.mount'
  )
  //
  // Wrap everything that is in the current buffer with a
  // closure so that we don't 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/director.js')
  //
  // Make a minified version for production use.
  //
  .uglify()
  .write(root + '/build/director.min.js')
;