gulp 4-使用监视服务器作业而不是编译器作业

时间:2019-07-08 18:21:50

标签: gulp 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();
  });
};

但是有没有办法像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 :(得分:0)

好吧,至少您可以那样做:

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

如果您的gulp任务像watch这样的任务将无限期运行。

但是这种方法很脏。您应该使用类似nodemon之类的方法。