如果要有条件地编译更少的文件,如何使用gulp?

如果要有条件地编译更少的文件,如何使用gulp?,gulp,gulp-if,Gulp,Gulp If,我不能正常工作 如果工作正常,则无需吞咽: gulp.task('css', function() { return gulp.src([ // 'bower_components/bootstrap/dist/css/bootstrap.css', 'app/stylesheets/main.less', ]) .pipe(less({ strictMath: true, strictUnits: true,

我不能正常工作

如果工作正常,则无需吞咽:

gulp.task('css', function() {
    return gulp.src([
    //  'bower_components/bootstrap/dist/css/bootstrap.css',
        'app/stylesheets/main.less',
    ])
    .pipe(less({
        strictMath: true,
         strictUnits: true,
    }))
    .pipe(concat('all.css', {newLine: '\n'}))
    .pipe(prefixer('> 1%'))
    .pipe(minifyCss())
    .pipe(gulp.dest('public/css'));
});
但是,只要我将
gulpif
添加到混合中,
gulpif
管道返回主流时不会返回任何内容:

gulp.task('css', function() {
    return gulp.src([
        'bower_components/bootstrap/dist/css/bootstrap.css',
        'app/stylesheets/main.less',
    ])

        .pipe(gulpif(/\.less$/,less({
            strictMath: true,
            strictUnits: true,
        })))
        .pipe(concat('all.css', {newLine: '\n'}))
        .pipe(prefixer('> 1%'))
        .pipe(minifyCss())
        .pipe(gulp.dest('public/css'));
});

为什么呢?我做错了什么?如果我将一些日志添加到
gulp If
源代码中,我可以看到该条件正在通过。

我认为您可能需要使用
gulp过滤器

这将创建一个经过过滤的流,而
restore()
将还原该流
gulpIf
用于有条件地处理整个流,而不仅仅是匹配文件

gulp.src('src/**/*.js', function () {
    .pipe(gulpIf(isProduction, concat('all.js')))
    .pipe(gulp.dest('dest/')
});

这听起来像是
中的一个bug,如果
。尝试将
gulp if
升级到最新版本,如果不起作用,请在上发布问题。

我将对
gulp filter
进行一次尝试,但我仍然不明白
gulp if
会起什么作用。我以前见过,你说得对
gulpif
使用应处理正则表达式的
gulp match
。这也应该是有效的:
.pipe(gulpIf('***.less')、less(lessOptions))
gulpIf和gulp过滤器满足不同的需求。gulp filter从流中删除与过滤器匹配的内容。gulp if是一条三元流,将东西传递给if,如果匹配,则传递给else,然后将所有东西传递给下游。你在说什么?那
gulpif
可以使用函数,但不能使用正则表达式?真的吗?因为接受正则表达式的文档。
gulp.src('src/**/*.js', function () {
    .pipe(gulpIf(isProduction, concat('all.js')))
    .pipe(gulp.dest('dest/')
});
gulp.task('css', function() {
    var condition = function(file) {
        if (file.extname == '.less') return true;
    };

    return gulp.src([
        'bower_components/bootstrap/dist/css/bootstrap.css',
        'app/stylesheets/main.less',
     ])
    .pipe(gulpif(condition, less({
        strictMath: true,
        strictUnits: true,
    })))
    .pipe(concat('all.css', {newLine: '\n'}))
    .pipe(prefixer('> 1%'))
    .pipe(minifyCss())
    .pipe(gulp.dest('public/css'));
});