使用虚拟主机时可以快速运行Gulp或Grunt任务吗?

时间:2014-05-05 18:10:36

标签: node.js express gruntjs vhosts gulp

我通常使用Gulp启动我的NodeJS服务器,其任务类似于:

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

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

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

});

编译我所有的Jade& Sass模板并将它们转储到资源文件夹中。

对于我目前的项目,我引入了vhosts,以便我可以为不同的节点应用程序提供[X] .mysite.com。我启动父服务器时,我不确定如何运行gulpfile。我是否应该在父目录中放置一个gulpfile,并在该目录中包含每个vhost应用程序的所有任务?同样的问题是'npm install'和' bower install'。

tl; dr:在使用ExpressJS时,如何为每个vhost应用运行Gulp或Grunt任务?同样的问题是'npm install'和' bower install'。

1 个答案:

答案 0 :(得分:1)

使用此文件夹结构:

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

您的server.js文件应如下所示:

 "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);
  });

website1文件夹中的app.js文件应如下所示:

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;

同样的事情应该是website2 / app.js文件

现在编写你的gulp任务并启动server.js

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

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

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

});

在项目的主目录中运行:

gulp serve

享受!