3

I usually start my NodeJS servers with Gulp, with a task similar to:

gulp.task('server', function(){

  var port = gulp.env.port || 80;

  plugins.nodemon({
    script: 'server.js',
    ignore: '*',
  }).on('start', ['source','watch:source']);

});

That compiles all my Jade & Sass templates and dumps them into an assets folder.

For my current project, I'm introducing vhosts, so that I can have a [X].mysite.com for different node apps. I'm not sure how to run my gulpfile when I start the parent server. Should I actually put one gulpfile in the parent directory, and include all tasks for each vhost app in that one? Same question for 'npm install' and 'bower install'.

tl;dr: How do you run a Gulp or Grunt task for each vhost app when using ExpressJS? Same question for 'npm install' and 'bower install'.

elliottregan
  • 1,301
  • 1
  • 13
  • 33
  • vhost is indicating that you are using a sever such as nginx to configure the routes. I have no clue what you are asking as a vhost (assuming nginx or apache) is just a proxy to your node application – SteveLacy May 06 '14 at 21:04
  • 1
    No, I am using vhost middleware for Express. No nginx. – elliottregan May 07 '14 at 21:32

1 Answers1

1

use this folder structure:

vhost(d)
   - website1(d)
     - app.js
     - public(d)
       - index.html
   - website2(d)
     - app.js
     - public
       - index.html
server.js

your server.js file should look like:

 "use strict";
  var
  express = require('express'),
  vhost = require('vhost'),
  app = express(),
  website1 = require('./vhost/website1/app'),
  website2 = require('./vhost/website2/app'),
  port = process.env.PORT || 8080;

app        
  .use(vhost('localhost', website))
  .use(vhost('cms.localhost', cms))
  .listen(port, function() {
    console.log('server listening on port ' + port);
  });

your app.js file in the website1 folder should look like:

var
express = require('express'),
app = express()

app.use(express.static(__dirname + '/public'));
app.get('/', function(req, resp) {
  resp.sendFile(__dirname + '/public/index.html');
});

module.exports = app;

same thing should be for the website2/app.js file

now write your gulp task and start server.js

gulp.task('serve', function(){

  var port = gulp.env.port || 8080;

  plugins.nodemon({
    script: 'server.js',
    ignore: '*',
  }).on('start', ['source','watch:source']);

});

in the main directory of your project run:

gulp serve

enjoy!

xechelonx
  • 562
  • 1
  • 4
  • 14