エラー内容
$ gulp sass
[11:24:34] Using gulpfile ~/Desktop/blogtest/gulpfile.js
[11:24:34] Starting 'sass'...
[11:24:34] The following tasks did not complete: sass
[11:24:34] Did you forget to signal async completion?
[11:24:34] The following tasks did not complete: sass
[11:24:34] Did you forget to signal async completion?
この部分でエラーメッセージ。。
しかし、cssディレクトリにstyle.cssは問題なく作成されています。
ちなみにこの段階でのgilpfile.js
は
gilpfile.js
var sass = require("gulp-sass");
gulp.task("sass", function() {
gulp.src("sass/**/*scss")
.pipe(sass())
.pipe(gulp.dest("./css"));
});
解決策
gulp.taskに渡すfunctionはパラメーターdoneをとって、そこに渡されるコールバックメソッドを最後に呼び出さなければならないみたいです。
コールバックを行うことで、task内の処理の終了を意味します。
そのため、記載のメソッドが呼ばれたタイミングで、そのtaskの処理は終了します。
そして、gilpfile.js
を変更。
gilpfile.js
gulp.task("sass", function(done) {
gulp.src("sass/**/*scss")
.pipe(sass())
.pipe(gulp.dest("./css"));
done();
});
そしてもう一度、$ gulp sass
$ gulp sass
[11:28:20] Using gulpfile ~/Desktop/blogtest/gulpfile.js
[11:28:20] Starting 'sass'...
[11:28:20] Finished 'sass' after 12 ms
コールバックした事によって、Finishedが走りました!
今度は問題なく、コンパイルできました。
つまり、各taskでは処理実行の終了を宣言する必要があるみたいですね。