如何使用gulp-if退出任务

时间:2019-10-08 10:50:29

标签: gulp gulp-4

我有一个处理图像的任务4。首先,它将它们最小化,如果满足条件,则应将SVG转换为PHP局部函数。如果不满足条件,我该如何实现这种条件并停止任务。

function processImages() {
    return src(src)
        .pipe(
            imagemin([
                imagemin.gifsicle({
                    interlaced: true,
                }),
                imagemin.jpegtran({
                    progressive: true,
                }),
                imagemin.optipng({
                    optimizationLevel: 3,
                }),
                imagemin.svgo({
                    plugins: [
                        {
                            removeViewBox: false,
                        },
                        {
                            cleanupIDs: false,
                        },
                    ],
                }),
            ]),
        )
        .pipe(dest(dest))
        // STOP AFTER THIS STEP IF CONDITION IS NOT MET
        .pipe(gulpif(!shouldCreatePartials(), exit()))
        .pipe(filter(file => /svg$/.test(file.path)))
        .pipe(
            rename({
                extname: '.php',
            }),
        )
        .pipe(dest(partialsDest));
}

2 个答案:

答案 0 :(得分:0)

请参见gulp-fail-看起来是与gulp-if一起使用的。

var fail   = require('gulp-fail');
var gulpIf = require('gulp-if');

var condition = true;


// Will fail with the given message shown as the reason.
gulp.task('mytask', function() {
  return gulp.src('**/*.js')
             .pipe(gulpIf(condition, fail("It failed cause I told it to! ...Hooray?")));
})

答案 1 :(得分:0)

最后,我的解决方案是将dest()封装在if中。

function processImages() {
    return src(src)
        .pipe(imagemin(),)
        .pipe(dest(dest))
        .pipe(gulpif(shouldCreatePartials(), filter(file => /svg$/.test(file.path))))
        .pipe(gulpif(shouldCreatePartials(), rename({
           extname: '.php',
         })))
        .pipe(gulpif(shouldCreatePartials(), dest(partialsDest)));
}