gulp 4 - использовать наблюдение за работой сервера вместо работы компилятора - PullRequest
0 голосов
/ 08 июля 2019

Если у вас есть задача, которая запускается и заканчивается, которую нужно запускать каждый раз, когда файлы меняются, что хорошо документировано здесь 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();
  });
};

1 Ответ

0 голосов
/ 08 июля 2019

Ну, по крайней мере, вы можете сделать это следующим образом:

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

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

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

...