示例#1
0
    u.each(self.scripts, function(script) {
      if (filterRe.test(script.route)) return;

      var out = fspath.join(output.path, script.route);
      var ws = fs.createOutputStream(out);
      ws.on('finish', function() {
        log('output script: %s', out);
      });
      ws.on('error', log);

      // from browserify-middleware index.js (may need to do noParse map also)
      var options = browserify.settings.normalize(script.opts);
      var bundler = browserify.buildBundle(script.path, options);
      if (!opts.dbg) { bundler.plugin(require.resolve('minifyify'), { map:false } ); }
      bundler.bundle().pipe(ws);
    });
示例#2
0
var app = express();

app.locals.asset = function (path) {
  return '/static/' + version + path
}
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');

app.use(express.favicon(join(__dirname, 'favicon.ico')));
app.use(function (req, res, next) {
  res.locals.path = req.path
  next()
})

app.use('/static/' + version, express.static(join(__dirname, 'static'), { maxAge: !process.env.NODE_ENV || process.env.NODE_ENV === 'development' ? 0 : ms('12 months') }));
browserify.settings.production('cache', '12 months');
app.get('/static/' + version + '/client/listing.js', browserify('./client/listing.js'));
app.get('/static/' + version + '/client/topic.js', browserify('./client/topic.js'));
app.get('/static/' + version + '/client/edit.js', browserify('./client/edit.js'));
app.get('/static/' + version + '/client/login.js', browserify('./client/login.js'));

if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development')
  app.use(express.logger('dev'));

app.get('/', function (req, res) {
  res.render('home', {});
});

app.get('/robots.txt', function (req, res) {
  res.end('User-agent: *\nDisallow: /source');
});
示例#3
0
// Load required modules
const http = require('http')
const express = require('express')
const path = require('path')
const browserify = require('browserify-middleware')
const app = express()

browserify.settings.development('basedir', __dirname)
app.get('/js/main.js', browserify('./client/main.js'))
app.use(express.static(path.join(__dirname, '/public/')))

var webServer = http.createServer(app)

webServer.listen(process.env.PORT, function () {
  // Callback triggered when server is successfully listening. Hurray!
  console.log('Server listening on: http://localhost:%s', process.env.PORT)
})
示例#4
0
文件: server.js 项目: ALXRSS/WebRTC
app.use(stylus.middleware({
  src: __dirname + '/site',
  compile: function(str, sourcePath) {
    return stylus(str)
      .set('filename', sourcePath)
      .set('compress', false)
      .use(nib());
  }
}));


app.get('/', function(req, res) {
  res.redirect(req.uri.pathname + 'room/main/');
});

browserify.settings.development('debug', true);

// force development mode for browserify given this is a demo
browserify.settings('mode', 'development');

// serve the rest statically
app.use(browserify('./site'));
app.use(express.static(__dirname + '/site'));

// we need to expose the primus library
app.get('/rtc.io/primus.js', switchboard.library());
app.get('/room/:roomname', function(req, res, next) {
  res.writeHead(200);
  fs.createReadStream(path.resolve(__dirname, 'site', 'index.html')).pipe(res);
});
示例#5
0
文件: app.js 项目: bencevans/npmgraph
 */

var express    = require('express');
var app        = express();
var redis      = require('redis-url').connect(process.env.REDISTOGO_URL);
var cachey     = require('cachey')({redisClient:redis});
var db         = new (require('./lib/db'))(cachey, 60 * 60);
var browserify = require('browserify-middleware');

require('datejs');

/**
 * Configure App
 */

browserify.settings.production('cache', '20 mins');
browserify.settings.mode = process.env.NODE_ENV || 'development';

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

app.configure(function() {
  app.set('view engine', 'html');
  app.engine('html', require('hbs').__express);
  app.use(express['static']('./public'));
});

app.configure('development', function() {
  app.use(express.logger('dev'));
});

if(process.env.CROSS_SITE) {
示例#6
0
module.exports = function serveScripts(opts, server) {

  if (!(this instanceof serveScripts)) return new serveScripts(opts);
  var self = this;
  var log = opts.log;

  self.serveRoutes = serveRoutes;
  self.outputAll = outputAll;     // for pub -O

  var browserify = require('browserify-middleware');

  // expose build-bundle for output to file
  browserify.buildBundle = require('browserify-middleware/lib/build-bundle.js');

  /* browsrify pregen with production is slow */
  if ((opts.outputOnly || opts.minify) && !opts.dbg) { browserify.settings.mode = 'production'; }

  browserify.settings( { ignore: ['request', 'request-debug', 'graceful-fs', 'resolve', 'osenv', 'tmp'],
                         ignoreMissing: false } );

  browserify.settings.production('cache', '1h');

  // prepare array of browserscripts including builtins
  self.scripts = u.map(opts.browserScripts, function(script) {
    var o = {
      route: script.route,
      path:  script.path,
      delay: script.delay,
      opts:  u.omit(script, 'path', 'route', 'inject', 'maxAge')
    }
    if ('maxAge' in script) { o.opts.cache = script.maxAge || 'dynamic'; }
    return o;
  });

  self.scripts.push( {
    route: '/server/pub-sockets.js',
    path: fspath.join(__dirname, '../client/pub-sockets.js')
  } );

  // editor scripts
  if (opts.editor) {

    if (!opts.spa) {
      self.scripts.push( {
        route: '/pub/pub-ux.js',
        path: fspath.join(__dirname, '../client/pub-ux.js')
      } );
    }

    self.scripts.push( {
      route: '/pub/_generator.js',
      path:  fspath.join(__dirname, '../client/_generator.js'),
    } );

    self.scripts.push( {
      route: '/pub/_generator-plugins.js',
      path:  fspath.join(__dirname, '../client/_generator-plugins.js'),
      opts:  { transform: [transformPlugins] }
    } );
  }

  return;

  //--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

  // deploy browserify scripts and editor/admin handlers
  function serveRoutes(server) {
    var app = server.app;
    var generator = server.generator;

    // route browserscripts, including builtins
    u.each(self.scripts, function(script) {
      var handler = browserify(script.path, script.opts);
      if (script.delay) {
        var delayed = function(req, res) {
          debug(req.path, 'waiting', script.delay);
          setTimeout(function() {
            debug(req.path, 'done waiting', script.delay);
            handler(req, res);
          }, u.ms(script.delay));
        }
      }
      app.get(script.route, delayed || handler);
    });

    // editor api
    if (opts.editor) {
      app.post('/pub/_files', function(req, res) {
        generator.serverSave(req.body, req.user, function(err, results) {
          if (err) return res.status(500).send(err);
          res.status(200).send(results);
        })
      });
      app.get('/pub/_opts.json', function(req, res) {
        res.set('Cache-Control', 'no-cache');
        res.send(serializeOpts(server.generator));
      });
    }

    // admin api
    app.get('/admin/flushCaches', function(req, res) {
      generator.flushCaches(function(err, results) {
        if (err) return res.status(500).send(err);
        res.status(200).send(results);
      })
    });

    app.get('/admin/reloadSources', function(req, res) {
      res.send(generator.reloadSources(req.query.src));
    });

    app.get('/admin/outputPages', function(req, res) {
      res.send(generator.outputPages(req.query.output));
    });

    app.get('/admin/logPages', function(req, res) {
      res.send(generator.logPages());
    });

    app.get('/admin/reload', function(req, res) {
      generator.reload()
      res.status(200).send('OK');
    });
  }

  // publish browserscripts
  function outputAll(generator) {

    var output = (opts.outputs && opts.outputs[0]);
    if (!output) return log('scripts.outputAll: no output');

    var omit = output.omitRoutes;
    if (omit && !u.isArray(omit)) { omit = [omit]; }

    // TODO: re-use similar filter in server/serve-statics and generator.output
    var filterRe = new RegExp( '^(/admin/|/server/' +
                (opts.editor ? '' : '|/pub/') +
                       (omit ? '|' + u.map(omit, u.escapeRegExp).join('|') : '') +
                               ')');

    u.each(self.scripts, function(script) {
      if (filterRe.test(script.route)) return;

      var out = fspath.join(output.path, script.route);
      var ws = fs.createOutputStream(out);
      ws.on('finish', function() {
        log('output script: %s', out);
      });
      ws.on('error', log);

      // from browserify-middleware index.js (may need to do noParse map also)
      var options = browserify.settings.normalize(script.opts);
      var bundler = browserify.buildBundle(script.path, options);
      if (!opts.dbg) { bundler.plugin(require.resolve('minifyify'), { map:false } ); }
      bundler.bundle().pipe(ws);
    });

    if (opts.editor) {
      var out = fspath.join(output.path, '/pub/_opts.json');
      fs.outputJson(out, serializeOpts(generator, true, output), function(err) {
        log(err || 'output opts: %s', out);
      });
    }
  }

  // browserify transform for sending plugins
  // invoked using require('./__plugins')
  function transformPlugins(path) {
    if (!/_generator-plugins/.test(path)) return through();
    return through(
      function tform(chunk, enc, cb) { cb() }, // ignore input
      function flush(cb) {
        this.push(requirePlugins());
        cb();
      }
    );
  }

  function requirePlugins() {
    var s = u.reduce(opts.generatorPlugins.reverse(),
      function(memo, plugin) {
        return memo + 'require("' + plugin.path + '")(generator);\n';
      }, '');

    return s;
  }

  function serializeOpts(generator, toStatic, outputDest) {
    var sOpts = u.omit(opts, 'output$', 'source$', 'log', 'session');

    // provide for detection of static hosted editor
    if (toStatic) { sOpts.staticHost = true; }

    // pass output.fqImages -> static opts for use in static editor/generator
    if (outputDest && outputDest.fqImages) { sOpts.fqImages = outputDest.fqImages; }

    sOpts.staticPaths = u.map(opts.staticPaths, function(staticPath) {
      return u.omit(staticPath, 'files', 'src');
    });
    sOpts.outputs = u.map(opts.outputs, function(output) {
      return u.omit(output, 'files', 'src');
    });
    sOpts.sources = u.map(opts.sources, function(source) {
      var rawSource = u.omit(source, 'files', 'src', 'file$', 'fragments', 'updates', 'snapshots', 'drafts', 'cache');
      rawSource.files = source.type === 'FILE' ?
        generator.serializeFiles(source.files) :
        source.files;
      return rawSource;
      });
    return sOpts;
  }

}
示例#7
0
文件: app.js 项目: 9612jhf/react-form
var express = require('express');
var browserify = require('browserify-middleware');
var exposify = require('exposify');

exposify.config = {react: 'React', 'react/addons': 'React'};

var app = express();

browserify.settings({
  transform: [
    ['reactify', {es6: true, sourceMaps: true}],
    [exposify, {global:true}]
  ]
});

browserify.settings.development({
  cache: 'dynamic',
  gzip: true,
  precompile: true
});

app.all('/', function(req, res) {
  res.sendFile('./index.html', {root: __dirname});
});

app.get('/example.js', browserify('./example.js'));

app.listen(3000);