Как я могу проверить, запущена ли задача gulp?

Я запускаю сервер livereload для разработки с gulp-server-livereload. Это задача default в gulpfile.js.

var gulp = require('gulp');
var server = require('gulp-server-livereload');

gulp.task('default', function() {
  gulp.src(basePath)
    .pipe(server({
      livereload: true,
      host: domain,
      port: 80,
    }));
});

Затем есть еще одна задача, gulp export, для которой требуется работающий веб-сервер. Если запускаю другой выдает ошибку (потому что порты 80 и 35729 заняты). Итак, логика, которой я придерживаюсь, такова:

если gulp default уже запущено, погрузитесь прямо в задачи кошмара.js
в противном случае запустите сервер и перейдите к задачам кошмара.js

Итак, моя проблема в том, что я не знаю надежного способа проверить, запущена ли задача gulp.

Могу ли я сделать это с помощью метода Gulp? Или с уровня Node? Я не хотел бы проверять открытые порты или адрес веб-сервера в качестве прокси-сервера для «да, задача по умолчанию выполняется», если это вообще возможно.


person Leeroy    schedule 01.03.2017    source источник
comment
В среде разработки вы можете отображать информацию на консоли или с помощью журнала.   -  person M. A. Cordeiro    schedule 01.03.2017


Ответы (1)


Могу ли я сделать это с помощью метода Gulp? Или с уровня Node? Я не хотел бы проверять открытые порты или адрес веб-сервера в качестве прокси-сервера для «да, задача по умолчанию выполняется», если это вообще возможно.

Я пока не нашел gulp способа, поэтому проверяю, заняты ли порты. Если они есть, это означает, что сервер запущен, и приступает к выполнению export задач, если нет, он запускает сервер.

var server = require('gulp-server-livereload');

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

  var net = require('net');

  var portFree = function(port, callback) {
    var server = net.createServer(function(socket) {
      socket.write('Echo server\r\n');
      socket.pipe(socket);
    });

    server.listen(port, '127.0.0.1');
    server.on('error', function (e) {
      callback(false);
    });
    server.on('listening', function (e) {
      server.close();
      callback(true);
    });
  };

  portFree(35729, function(returnValue) {
    // If server isn't already running, start it.
    if(returnValue) {
      gulp.src(basePath)
      .pipe(server({
        livereload: true,
        host: 'http://localhost'
      }));
    }
  });

  // Do the actual export tasks...
});
person Leeroy    schedule 22.03.2018