【发布时间】:2020-11-07 06:13:36
【问题描述】:
我对 Node.js 项目的经验很少,并且继承了一个使用 Gulp 构建和分发自身的项目。
该项目有几个不同的任务文件,以及一个引用它们的gulpfile.js。为简洁起见,我以最小的函数为例。
//gulpfile.js
...
gulp.task('csscompile', function() {
gulp.src('./src/ops/gulp/csscompile.js')
});
...
//csscompile.js
...
module.exports = function (gulp) {
gulp.task('csscompile', function (done) {
let paths = [
'src/app/**/*.scss',
'node_modules/angular-material/angular-material.scss',
];
gulp.src(paths)
.pipe(sass())
.pipe(concat('app.css'))
.pipe(gulp.dest('build'))
.done();
});
};
从命令行运行 $ gulp csscompile 总是在大约 10 毫秒内完成整个函数,我得到如下输出:
[10:44:43] The following tasks did not complete: csscompile
[10:44:43] Did you forget to signal async completion?
显然等待函数完成存在问题。在四处搜索之后,我尝试了使用async 标志、使用function (done) 等所有可以想象的组合,但无济于事。即使将csscompile 函数直接放在csscompile 任务中也不起作用。
我认为使用gulp.src() 是问题的一部分,我不知道这些函数是内联的还是什么。我还想避免将这些函数中的每一个都变成Promise。
有人对我可以做出的改变有什么建议吗?
【问题讨论】:
-
您是否也在
gulp.task('csscompile', function() { return gulp.src('./src/ops/gulp/csscompile.js') });函数中添加了返回值?这可能是问题所在。