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
ちゃんと終了してくれます。
コメント