首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gulp如果有条件地编译更少的文件?

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

Stack Overflow用户
提问于 2014-04-16 05:57:22
回答 3查看 15.7K关注 0票数 5

我不能让吞咽正常工作。

如果效果好的话:

代码语言:javascript
复制
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'));
});

但是,当我将gulp-if添加到混合时,当gulpif管道返回到主流时,它将不会返回任何内容:

代码语言:javascript
复制
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源代码中,我可以看到条件正在传递。

EN

回答 3

Stack Overflow用户

发布于 2014-04-17 15:59:31

我认为您可能希望使用gulp-filterhttps://www.npmjs.org/package/gulp-filter

代码语言:javascript
复制
gulp.task('css', function() {
    var lessFilter = gulpFilter('**/*.less', {restore: true})
    return gulp.src([
        'bower_components/bootstrap/dist/css/bootstrap.css',
        'app/stylesheets/main.less',
    ])

    .pipe(lessFilter)
    .pipe(less({
        strictMath: true,
        strictUnits: true,
    }))
    .pipe(lessFilter.restore)

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

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

代码语言:javascript
复制
gulp.src('src/**/*.js', function () {
    .pipe(gulpIf(isProduction, concat('all.js')))
    .pipe(gulp.dest('dest/')
});
票数 12
EN

Stack Overflow用户

发布于 2014-05-12 04:15:12

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

票数 3
EN

Stack Overflow用户

发布于 2017-03-02 09:56:55

代码语言:javascript
复制
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'));
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23101139

复制
相关文章

相似问题

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