如果我在循环中运行Gulp,我该怎么回事?

时间:2016-02-18 07:17:03

标签: javascript gulp

this StackOverflow post开始,我了解到一般不应该在gulp任务中返回任何内容。我希望调用者等待异步任务。

这是我gulpfile.js目前的样子:

'use strict';

var gulp = require('gulp'),
    uglify = require('gulp-uglify'),
    livereload = require('gulp-livereload'),
    del = require('del'),
    util = require('gulp-util'),

    paths = {
        scripts: {
            main: 'app.js',
            controllers: 'controllers/*.js',
            services: 'services/*.js'
        },
        css: 'css/*.css',
        html: {
            index: 'index.html',
            views: 'views/*.html',
            directives: 'directives/*.html'
        },
        bower_components: 'bower_components/*.*'
    };

gulp.task('build-js', function() {
    var destination;

    for (var key in paths.scripts) {
        util.log('Building ' + key);

        if (/\*\.js$/.test(paths.scripts[key])) { // just so I catch app.js correctly in the paths
            destination = 'build/' + paths.scripts[key].slice(0, -4);
        } else {
            destination = 'build/';
        }

        gulp.src(paths.scripts[key])
            .pipe(uglify())
            .pipe(gulp.dest(destination));
    }

    util.log('returning..');

    return;

});

我不确定在build-js任务中应该返回什么。

这样做的最佳做法是什么?我不想安装另一个模块来解决这个问题。

任何人都可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

Gulp将为您迭代所有文件而无需循环。如果你想做有条件的东西,那么使用gulp-if。这是基本的想法:

gulp.task('build-js', function() {
    var destination;

    return gulp.src(paths.scripts)
            //.pipe(gulp-if(....))
            .pipe(uglify())
            .pipe(gulp.dest(destination));
    }

});