升级到Gulp 4时发出异步完成警告信号

时间:2018-09-03 08:32:27

标签: node.js gulp gulp-4

我使用Gulp在非JavaScript项目中运行一个简单的任务。我正在尝试从3.9.1升级到4.0,以摆脱“不推荐使用”和“安全”警告的泛滥。我与A quick guide for switching to gulp 4之类的文章一起在本地进行了升级,dropped gulp-util并最终得到了package.json

{
  "name": "redacted",
  "main": "gulpfile.js",
  "private": true,
  "devDependencies": {
    "ansi-colors": "^3.0.5",
    "fancy-log": "^1.3.2",
    "gulp": "^4.0.0",
    "gulp-zip": "^4.2.0",
    "temp": "^0.8.3"
  }
}

但是我不是Node.js专家,所以我显然缺少一些东西。我的旧式任务:

var gulp = require('gulp');
var log = require('fancy-log');
gulp.task('hi', function() {
    log('Hello, World!');
});

…触发:

PS D:\Redacted> gulp hi
[10:25:58] Using gulpfile D:\Redacted\gulpfile.js
[10:25:58] Starting 'hi'...
[10:25:58] Hello, World!
[10:25:58] The following tasks did not complete: hi
[10:25:58] Did you forget to signal async completion?

如果我注入gulp.series()并按照文章的建议摆脱匿名函数的话:

function hi() {
    log('Hello, World!');
}
gulp.task('hi', gulp.series(hi));

…然后任务执行两次或输出两次显示(不确定),但警告仍然存在:

PS D:\Redacted> gulp hi
[10:28:47] Using gulpfile D:\Redacted\gulpfile.js
[10:28:47] Starting 'hi'...
[10:28:47] Starting 'hi'...
[10:28:47] Hello, World!
[10:28:47] The following tasks did not complete: hi, hi
[10:28:47] Did you forget to signal async completion?

我缺少什么?有更好的升级指南吗?

1 个答案:

答案 0 :(得分:1)

老式语法仍然有效。我显然只是错过了对 done 回调的最终调用,而该调用似乎在Gulp / 3上并不是必需的:

gulp.task('hi', function(done){
    log('Hello, World!');
    done();
});

gulp.series()对于执行单个任务来说似乎有些矫kill过正。