gpt4 book ai didi

javascript - Gulp 任务不同步

转载 作者:行者123 更新时间:2023-11-30 16:24:44 25 4
gpt4 key购买 nike

我正在尝试在我的项目中将 browserifybabelify 一起使用。除了同步问题,一切都很好。

// Browserify
//---------------------------------------------------
gulp.task('browserify', function() {
var bundler = browserify('_babel/script.js').transform(babelify);

bundler.bundle()
.pipe(source('_babel/script.js'))
.pipe(gulp.dest('_dev'));
});

// JavaScript moving and merging
//---------------------------------------------------
gulp.task('js-min', ['browserify'], function() {
return gulp.src('_dev/_babel/script.js')
.pipe(concatjs('scripts.js'))
.pipe(gulp.dest('_js'))
.pipe(browserSync.stream());
});

gulp.watch('_babel/**', ['js-min']);

据我所知,browserify 通知 gulp 它已完成(完成非常快,10 毫秒左右),但未完成。然后 js-min 移动旧文件。这样的观察似乎是正确的,因为我总是落后

我能做什么?

最佳答案

可以通过三种方式告诉 Gulp 任务已经完成。

  1. 您已在任务中执行所有同步内容:

     gulp.task('task-a', function(){
    // do sync stuff

    // you may return here
    // but because everything is sync Gulp assumes that everything has ended
    });
  2. 你得到回调作为输入

    // the passed cb is the next task to execute
    gulp.task('task-b', function(cb){

    // do async stuff

    cb( result );
    });
  3. 返回 promise /流(适合您的情况):

    gulp.task('task-c', function(){

    // return either a promise or a stream
    return gulp.src( ... );

    });

在这两种情况下,Gulp 2 和 3 都会在调用下一个函数之前等待执行结束。您基本上是在写案例 3,但 Gulp 认为它是案例 1。要解决这个问题,只需返回 bundler 就可以了:

// Browserify
//---------------------------------------------------
gulp.task('browserify', function() {
var bundler = browserify('_babel/script.js').transform(babelify);

return bundler.bundle()
.pipe(source('_babel/script.js'))
.pipe(gulp.dest('_dev'));
});

// JavaScript moving and merging
//---------------------------------------------------
gulp.task('js-min', ['browserify'], function() {
return gulp.src('_dev/_babel/script.js')
.pipe(concatjs('scripts.js'))
.pipe(gulp.dest('_js'))
.pipe(browserSync.stream());
});

gulp.watch('_babel/**', ['js-min']);

关于javascript - Gulp 任务不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34291040/

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