gulp ejs で The following tasks did not complete: ejs が出たときの対処法

gulp ejs ジョブで以下のエラーメッセージに遭遇することがあります。

[21:04:35] The following tasks did not complete: ejs
[21:04:35] Did you forget to signal async completion?

処理の末端まで実行されたのに、終了したと検知されないことが原因です。

対処方法

明示的に終了を宣言します。

具体的には、コールバック関数を実行します。

var gulp = require('gulp');
var ejs = require('gulp-ejs');
var rename = require('gulp-rename');
var outdir = "../public/"

gulp.task('ejs', function(cb) {
    gulp.src(
        [
            '../ejs/*.ejs' //入力ソースパターン&path
            ,'!' + "../../ejs/_*.ejs" //入力除外ソースパターン&path
        ]
    )
        .pipe(ejs())
        .pipe(rename({extname: '.html'})) //出力ファイル名パターン
        .pipe(gulp.dest(outdir)); //出力path

        cb();

});

このように、

gulp.task('ejs', function(cb) {

cb()というコールバックを引数にとってタスクを定義します。

タスクの最後で、

cb();

コールバックを実行します。

こうすることで、

[21:06:50] Starting 'ejs'...
[21:06:50] Finished 'ejs' after 28 ms

ちゃんと終了してくれます。

返信を残す

メールアドレスが公開されることはありません。