gpt4 book ai didi

javascript - gulp 4.0 : run tasks in series

转载 作者:行者123 更新时间:2023-11-28 15:06:44 25 4
gpt4 key购买 nike

我正在尝试连续运行一组任务,即在 Gulp 4.0 中一个接一个地运行,但是当我添加第三个任务时,我的 gulp 代码中断了。

    gulp.task('concat-js', (done) => {
gulp.src([
'app1.js',
'app2.js',
])
.pipe(concat("app.js"))
.pipe(gulp.dest('build'))
done();
});

gulp.task('concat-css', (done) => {
gulp.src([
'.styles1.css',
'.style2.css'
])
.pipe(concat("app.css"))
.pipe(gulp.dest('build'))
done();
});

gulp.task('minify-js', (done) => {
gulp.src('./build/app.js')
.pipe(uglify())
.pipe(gulp.dest('./build/'))
done();
})

//this works & creates /build with the app.js & app.css files
gulp.task('build-production-static-resource', gulp.series('concat-js', 'concat-css',, (done) => {
done();
}));

如果我删除构建文件夹以重新开始并尝试添加另一个任务(minfy-js),我的第三个任务将失败并且构建文件夹也不会创建。

    //File not found with singular glob: /Users/user/myapp/build/app.js
gulp.task('build-production-static-resource', gulp.series('concat-js', 'concat-css', 'minify-js', (done) => {
done();
}));

最佳答案

您发出异步完成任务信号的方式是错误的。阅读 this answer概述在 gulp 中发出异步完成信号的不同方式。

基本上,您通过 gulp.src() 创建的所有流都是异步的。这意味着您创建了流并且您的代码立即返回。然而,流的实际处理仅在您退出任务函数之后才开始。为了让 gulp 知道您正在使用流并且它必须等待流完成处理,您需要从任务中返回流。

你正在做完全不同的事情。您正在调用回调函数 done,这是向 gulp 发出异步任务完成信号的另一种方式。然而,在这种情况下,这是完全错误的方式,因为当您调用回调函数done时,您创建的流甚至还没有开始处理。

这意味着 gulp 认为您的 concat-js 任务已经完成,尽管您任务中的代码甚至还没有真正开始运行。因此,当 minify-js 任务运行时,您的 ./build/app.js 文件尚未创建。繁荣。错误。

要解决此问题,请始终从任务中返回流:

gulp.task('concat-js', () => {
return gulp.src([
'app1.js',
'app2.js',
])
.pipe(concat("app.js"))
.pipe(gulp.dest('build'))
});

gulp.task('concat-css', () => {
return gulp.src([
'.styles1.css',
'.style2.css'
])
.pipe(concat("app.css"))
.pipe(gulp.dest('build'))
});

gulp.task('minify-js', () => {
return gulp.src('./build/app.js')
.pipe(uglify())
.pipe(gulp.dest('./build/'))
})

gulp.task('build-production-static-resource', gulp.series(
'concat-js', 'concat-css', 'minify-js'
));

关于javascript - gulp 4.0 : run tasks in series,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com