Может ли Express запускать задачи Gulp или Grunt при использовании виртуальных хостов?

Обычно я запускаю свои серверы NodeJS с помощью Gulp с примерно такой задачей:

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

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

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

});

Это компилирует все мои шаблоны Jade & Sass и сбрасывает их в папку с ресурсами.

Для моего текущего проекта я представляю виртуальные хосты, чтобы иметь [X].mysite.com для разных приложений узла. Я не знаю, как запускать gulpfile при запуске родительского сервера. Должен ли я на самом деле поместить один gulpfile в родительский каталог и включить в него все задачи для каждого приложения vhost? Тот же вопрос для «npm install» и «bower install».

tl;dr: Как вы запускаете задачу Gulp или Grunt для каждого приложения виртуального хоста при использовании ExpressJS? Тот же вопрос для «npm install» и «bower install».


person elliottregan    schedule 05.05.2014    source источник
comment
vhost указывает, что вы используете сервер, такой как nginx, для настройки маршрутов. Я понятия не имею, что вы спрашиваете, поскольку виртуальный хост (при условии, что nginx или apache) - это просто прокси для вашего приложения node.   -  person SteveLacy    schedule 07.05.2014
comment
Нет, я использую промежуточное ПО vhost для Express. Нет нгинкса.   -  person elliottregan    schedule 08.05.2014


Ответы (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);
  });

ваш файл app.js в папке веб-сайта1 должен выглядеть так:

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

Наслаждайтесь!

person xechelonx    schedule 26.08.2016