Gulp修复“gulp.run()已被弃用”服务器Livereload

时间:2016-07-09 23:30:16

标签: gulp gulp-watch

我是Gulp的新手,我发现了一个Gulpfile.js示例,我想在我的app.js文件或./public目录中进行更改时,我想用它来重新启动我的快递应用程序的服务器。这是Gulpfile.js代码:

var gulp = require('gulp'),
    spawn = require('child_process').spawn,
    node;

/**
 * $ gulp server
 * description: Launch the server. If there's a server already running, kill it.
 */
gulp.task('server', function() {
  if (node) node.kill()

  node = spawn('node', ['app.js'], {stdio: 'inherit'})

  node.on('close', function (code) {
    if (code === 8) {
      gulp.log('Error detected, waiting for changes...');
    }
  });
})

/**
 * $ gulp default
 * description: Start the development environment
 */
gulp.task('default', function() {
  gulp.run('server')

  gulp.watch(['./app.js', './public/'], function() {
    gulp.run('server')
  })
})

// clean up if an error goes unhandled.
process.on('exit', function() {
    if (node) node.kill()
})

在我的终端窗口中,我不断收到以下警告:

gulp.run() has been deprecated. Use task dependencies or gulp.watch task triggering instead.

Gulp正在工作,它正在按照我的意愿对网络应用程序进行实时重载,但是我想解决这个问题,以便将来证明我的开发过程,以及摆脱这个烦人的警告信息。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

一种选择是简单地将所有gulp.run()替换为gulp.start()

gulp.task('default', function() {
  gulp.start('server');

  gulp.watch(['./app.js', './public/'], function() {
    gulp.start('server');
  });
});

然而,使用gulp.start()明确地调用任务并不是在gulp中做事的惯用方法(虽然有时候是必要的)。

您收到的警告信息已经暗示了解决此问题的惯用方法:

  

使用任务依赖项或gulp.watch任务触发

  • Task dependencies允许您在另一个任务之前运行任务。这意味着你可以摆脱第一个gulp.run()
  • gulp.watch()中的
  • Task triggering允许您在文件更改时运行任务。这意味着你可以摆脱第二个gulp.run()

因此,您的default任务最终会如下所示:

gulp.task('default', ['server'], function() {
  gulp.watch(['./app.js', './public/'], ['server']);
});