我是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正在工作,它正在按照我的意愿对网络应用程序进行实时重载,但是我想解决这个问题,以便将来证明我的开发过程,以及摆脱这个烦人的警告信息。
感谢您的帮助!
答案 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任务触发
gulp.run()
。gulp.watch()
中的gulp.run()
。因此,您的default
任务最终会如下所示:
gulp.task('default', ['server'], function() {
gulp.watch(['./app.js', './public/'], ['server']);
});