首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp.js按特定顺序阻塞运行任务

Gulp.js按特定顺序阻塞运行任务
EN

Stack Overflow用户
提问于 2014-07-09 18:58:29
回答 3查看 13.6K关注 0票数 8

使用gulp.js,我想作为父构建任务的一部分运行三个任务(uglify、buildHTML、rmRevManifest)。我的代码正常工作,但它并行运行任务(即没有保留顺序)。如何使任务块在上次完成之前不运行下一个任务?

也就是说,现在执行命令返回为:

代码语言:javascript
复制
[11:50:17] gulp-notify: [Gulp notification] Deleted 'rev-manifest.json'.
[11:50:17] gulp-notify: [Gulp notification] Created 'build/index.html'.
[11:50:17] gulp-notify: [Gulp notification] Uglified JavaScript.

顺序很重要,而uglify应该先运行,然后运行buildHTML,最后运行rmRevManifest。

代码语言:javascript
复制
gulp.task('build', ['uglify', 'buildHTML', 'rmRevManifest'], function(cb) {
});

gulp.task('uglify', function(cb) {
    gulp.src('client/js/source/**/*.js')
        .pipe(concat('app'))
        .pipe(ngmin())
        .pipe(uglify())
        .pipe(rev())
        .pipe(rename({
            extname: ".min.js"
        }))
        .pipe(gulp.dest('client/js'))
        .pipe(rev.manifest())
        .pipe(gulp.dest('client/js'))
        .pipe(notify('Uglified JavaScript.'));
});

gulp.task('buildHTML', function(cb) {
    gulp.src('client/views/index.html')
        .pipe(replace(/app\-[a-fA-F0-9]\.min\.js/, 'app-.min.js'))
        .pipe(gulp.dest('client/build'))
        .pipe(notify('Created \'build/index.html\'.'));
});

gulp.task('rmRevManifest', function(cb) {
    gulp.src('client/js/rev-manifest.json', { read: false })
        .pipe(rimraf())
        .pipe(notify('Deleted \'rev-manifest.json\'.'));
});
EN

回答 3

Stack Overflow用户

发布于 2014-07-09 22:46:11

在Gulp3.0中设置依赖项的示例。在本例中,3个任务依赖于应该首先执行的“清洁”任务:

代码语言:javascript
复制
// Include Gulp
var gulp = require('gulp');
var task = {};

// Clean up
gulp.task('clean', function () { .. });

// HTML pages
gulp.task('pages', task.pages = function () { ... });
gulp.task('pages:clean', ['clean'], task.pages);

// CSS style sheets
gulp.task('styles', task.styles = function () { ... });
gulp.task('styles:clean', ['clean'], task.styles);

// JavaScript files
gulp.task('scripts', task.scripts = function () { ... });
gulp.task('scripts:clean', ['clean'], task.scripts);

// Bundling and optimization
gulp.task('build', ['pages:clean', 'styles:clean', 'scripts:clean']);

对于运行顺序,它等于:

代码语言:javascript
复制
// Include Gulp & utilities
var gulp = require('gulp');
var runSequence = require('run-sequence');

// Clean up
gulp.task('clean', function () { .. });

// HTML pages
gulp.task('pages', function () { ... });

// CSS style sheets
gulp.task('styles', function () { ... });

// JavaScript files
gulp.task('scripts', function () { ... });

// Bundling and optimization
gulp.task('build', ['clean'], function (cb) {
    runSequence(['pages', 'styles', 'scripts'], cb);
});

P.S.:在即将推出的Gulp4.0中,依赖系统将会更好。

票数 9
EN

Stack Overflow用户

发布于 2014-07-09 19:03:45

真正的答案是:您需要设置依赖项,这需要先运行其他任务。

简单的答案是:有一个npm模块来完成您需要的运行顺序

票数 6
EN

Stack Overflow用户

发布于 2014-07-09 19:28:45

代码语言:javascript
复制
var runSequence = require('run-sequence');

gulp.task('build', function(cb) {
     runSequence('uglify',
                 'buildHTML',
                 'rmRevManifest',
                 cb);
});

    gulp.task('uglify', function() {
        return gulp.src('client/js/source/**/*.js')
               .pipe(concat('app'))
               .pipe(ngmin())
               .pipe(uglify())
               .pipe(rev())
               .pipe(rename({
                    extname: ".min.js"
                }))
               .pipe(gulp.dest('client/js'))
               .pipe(rev.manifest())
               .pipe(gulp.dest('client/js'));
    });

    gulp.task('buildHTML', function() {
        var revManifest = require('./client/js/rev-manifest.json');

        return gulp.src('client/views/index.html')
               .pipe(replace(/app\-[a-fA-F0-9]\.min\.js/, 'app-' + revManifest.app + '.min.js'))
               .pipe(gulp.dest('client/build'));
    });

    gulp.task('rmRevManifest', function() {
        return gulp.src('client/js/rev-manifest.json', { read: false })
               .pipe(rimraf());
    });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24661724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档