gulp 4 - использовать наблюдение за заданием сервера вместо задания компилятора

Если у вас есть задача, которая начинается и завершается, ее нужно запускать каждый раз при изменении файлов, это хорошо задокументировано здесь https://gulpjs.com/docs/en/getting-started/watching-files

const { watch } = require('gulp');

exports.default = function() {
  // The task will be executed upon startup
  watch('src/*.js', { ignoreInitial: false }, function(cb) {
    // body omitted
    cb();
  });
};

Но есть ли способ использовать gulp watch, как nodemon? Где вы оставляете задачу запущенной, а затем останавливаете и запускаете ее всякий раз, когда изменяется файл в списке наблюдения?

--- более ---

попросили несколько примеров, поэтому вот несколько примеров, которые не будут работать

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

---- пример №1 - запустить сервер в процессе -----

exports.default = function() {
  watch('src/*.js', { ignoreInitial: false }, function(cb) {
    // this will call back but when the watch is triggered again
    // it will try to start another instance
    app.listen(3000, cb);
  });
};

---- пример #2 - запустить сервер в своем собственном процессе -----

exports.default = function() {
  watch('src/*.js', { ignoreInitial: false }, function(cb) {
    const proc = spawn('node', ['server.js']);
    proc.stdout.pipe(process.stdout);
    proc.stderr.pipe(process.stderr);
    // this will never call the call back
    // so never complete
    cb();
  });
};

person Alex028502    schedule 08.07.2019    source источник
comment
Я не совсем понимаю, чем ваш вариант использования отличается от обычной задачи просмотра в Gulp. Не могли бы вы добавить пример?   -  person Lukas Körfer    schedule 09.07.2019
comment
Вы проверили gulp-nodemon?   -  person Lukas Körfer    schedule 09.07.2019
comment
У меня были проблемы с nodemon, поэтому я пытался выяснить, есть ли достаточно простой способ сделать это, просто проглотив и наблюдая   -  person Alex028502    schedule 09.07.2019


Ответы (1)


Ну, по крайней мере, вы можете сделать так:

% gulp someTask >/dev/null 2>&1 &
[1] _pid_

И ваша задача gulp будет выполняться бесконечно, если это такая задача, как watch.

Но такой подход очень грязный. Вы должны использовать что-то вроде nodemon для достижения этого.

person Alexander Zinchenko    schedule 08.07.2019