gulp任务等待express server启动的更好方法

gulp任务等待express server启动的更好方法,express,promise,gulp,Express,Promise,Gulp,需要gulp 4.0.2任务等待express 4.17.1服务器启动,然后打开浏览器 以下是我的作品(但我认为这是一种很古老的风格) 虽然这样做很好,但我想知道是否有更精简的方法来完成同样的事情。关于这个主题的最后一篇StackOverflow文章已经有3年多的历史了。你可以重写所有内容,以实现承诺,但区别主要在于语法。总体的投票模式大致相同。我知道,重写是不值得的,除非你选择投票以外的其他方式。不太确定那可能是什么。是吗?谢谢Roamer-1888。我想知道在监视发出的事件的基础上是否可以做

需要gulp 4.0.2任务等待express 4.17.1服务器启动,然后打开浏览器

以下是我的作品(但我认为这是一种很古老的风格)


虽然这样做很好,但我想知道是否有更精简的方法来完成同样的事情。关于这个主题的最后一篇StackOverflow文章已经有3年多的历史了。

你可以重写所有内容,以实现承诺,但区别主要在于语法。总体的投票模式大致相同。我知道,重写是不值得的,除非你选择投票以外的其他方式。不太确定那可能是什么。是吗?谢谢Roamer-1888。我想知道在监视发出的事件的基础上是否可以做些什么。
// Start server in development or test mode
gulp.task('start:server', () => {
  process.env.NODE_ENV = process.env.NODE_ENV || 'development';
  config = require(`./${serverPath}/config/environment`).default;
  nodemon(`--inspect --trace-deprecation --trace-warnings -w ${serverPath} ${serverPath}`)
    .on('log', onServerLog);
});

// Run nodemon with debugging (server/config/express.js runs webpack.make.js)
gulp.task('serve',
  gulp.series(
    gulp.parallel('eslint', 'eslint:tests', 'client:inject:scss', 'dist:client:assets:fonts', 'env:common'),
    gulp.parallel('start:server', 'start:client'),
    'watch'
  )
);

// Perform HTTP GET to check for app readiness
function checkAppReady(cb) {
  let options = {
    host: 'localhost',
    port: config.port
  };
  http.get(options, () => cb(true))
    .on('error', () => cb(false));
}

// Check every 250ms until app server is ready
function whenServerReady(cb) {
  let serverReady = false;
  let appReadyInterval = setInterval(() =>
    checkAppReady(ready => {
      if(!ready || serverReady) {
        return;
      }
      clearInterval(appReadyInterval);
      serverReady = true;
      cb();
    }),
  250);
}

// Wait until server is responding then open browser on client to our starting page
gulp.task('start:client', done => {
  whenServerReady(() => {
    opn(`http://localhost:${config.browserSyncPort}`/*, {app: 'google chrome'}*/);
    done();
  });
});