zoukankan      html  css  js  c++  java
  • gulp常用插件之gulp-if使用

    更多gulp常用插件使用请访问:gulp常用插件汇总


    gulp-if这是一款条件判断插件。

    注意:gulp-if一起使用时,表现不佳的插件通常会变得更糟。通常,修复不在gulp-if中。
    注意:lazypipe一起使用时效果很好,请参见下文

    更多使用文档请点击访问gulp-if工具官网

    安装

    一键安装不多解释

    npm install --save-dev gulp-if
    

    使用

    /**
    *   @param condition {Boolen}   判断条件或glob条件
    *   @param stream               condition为true时,执行的任务
    *   @param elseStream           condition为false时,执行的任务
    *   @param minimatchOptions     如果是GLUB条件,这些选项被传递给minimatch
    */
    gulpif(condition, stream [, elseStream, [, minimatchOptions]])
    

    1:有条件地过滤内容

    var gulpif = require('gulp-if');
    var uglify = require('gulp-uglify');
    
    var condition = true; // TODO: add business logic
    
    gulp.task('task', function() {
      gulp.src('./src/*.js')
        .pipe(gulpif(condition, uglify()))
        .pipe(gulp.dest('./dist/'));
    });
    

    如果条件为真,则压缩内容,将所有文件发送到dist文件夹

    2:三元过滤器

    var gulpif = require('gulp-if');
    var uglify = require('gulp-uglify');
    var beautify = require('gulp-beautify');
    
    var condition = function (file) {
      // TODO: 添加业务逻辑
      return true;
    }
    
    gulp.task('task', function() {
      gulp.src('./src/*.js')
        .pipe(gulpif(condition, uglify(), beautify()))
        .pipe(gulp.dest('./dist/'));
    });
    

    如果条件返回true,则进行压缩其他对象进行美化,然后所有内容发送到dist文件夹

    3:从流中删除内容

    var gulpIgnore = require('gulp-ignore');
    var uglify = require('gulp-uglify');
    var jshint = require('gulp-jshint');
    
    var condition = './gulpfile.js';
    
    gulp.task('task', function() {
      gulp.src('./*.js')
        .pipe(jshint())
        .pipe(gulpIgnore.exclude(condition))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/'));
    });
    

    对所有内容运行JSHint,从流中删除gulpfile,然后进行丑化并编写其他所有内容。

    4:从流中排除事物

    var uglify = require('gulp-uglify');
    
    gulp.task('task', function() {
      gulp.src(['./*.js', '!./node_modules/**'])
        .pipe(uglify())
        .pipe(gulp.dest('./dist/'));
    });
    

    抓取所有不在node_modules文件夹中的JavaScript文件,对其进行丑化处理并将其写入。这是最快的,因为node_modules中什么都没有留下gulp.src()

    ** 与lazypipe搭配使用效果很好 **
    Lazypipe创建一个函数,该函数在使用时初始化管道链。这使您可以在gulp-if条件内创建一系列事件。仅当linting标志为true时,此方案才会运行jshint分析和报告程序。

    var gulpif = require('gulp-if');
    var jshint = require('gulp-jshint');
    var uglify = require('gulp-uglify');
    var lazypipe = require('lazypipe');
    
    var linting = false;
    var compressing = false;
    
    var jshintChannel = lazypipe()
      // 添加管道步骤 
      .pipe(jshint) // 注意流函数尚未被调用!
      .pipe(jshint.reporter)
      // 添加具有自变量的步骤 
      .pipe(jshint.reporter, 'fail');
    
    gulp.task('scripts', function () {
      return gulp.src(paths.scripts.src)
        .pipe(gulpif(linting, jshintChannel()))
        .pipe(gulpif(compressing, uglify()))
        .pipe(gulp.dest(paths.scripts.dest));
    });
    

    ** 在lazypipe内部效果很好 **
    Lazypipe假定所有函数参数都是静态的,如果需要在每个lazypipe内部实例化gulp-if参数,则为gulp。通过在惰性管道步骤上传递函数可以轻松解决此差异

    var gulpif = require('gulp-if');
    var jshint = require('gulp-jshint');
    var uglify = require('gulp-uglify');
    var lazypipe = require('lazypipe');
    
    var compressing = false;
    
    var jsChannel = lazypipe()
      // 添加管道步骤 
      .pipe(jshint) // 注意流函数尚未被调用!
      .pipe(jshint.reporter)
      // 添加具有自变量的步骤 
      .pipe(jshint.reporter, 'fail')
      // 你不能说 .pipe(gulpif, compressing, uglify)
      // 因为丑化需要在每个lazypipe情况下单独实例化
      // 您可以这样说:
      .pipe(function () {
        return gulpif(compressing, uglify());
      });
      // 为什么这样做有效?lazypipe调用该函数,并传入no参数,,
      // 实例化一个新的gulp-if管道,并将其返回给lazypipe。
    
    gulp.task('scripts', function () {
      return gulp.src(paths.scripts.src)
        .pipe(jsChannel())
        .pipe(gulp.dest(paths.scripts.dest));
    });
    

    API
    gulpif(condition, stream [, elseStream, [, minimatchOptions]])

    gulp-if会将数据通过管道传输到stream任何condition真实情况。
    如果conditionfalseelseStream已传递,则数据将通过管道传递到elseStream
    在数据通过管道传输到streamelseStream或两者都不是之后,数据通过管道传输到stream

    • condition
      类型:booleanstat对象,或function需要一个vinyl文件并返回布尔值或RegularExpression可以在file.path
      condition参数是gulp-match支持的任何条件。将file.path传递到中gulp-match
      如果给出了功能,则该功能会传递乙烯基file。该函数应返回boolean
    • stream
      gulp-if的流,以在条件为真时将数据通过管道传输到其中。
    • elseStream
      可选,当条件为false时,为gulp-if提供流传输数据。
    • minimatchOptions
      可选,如果是全局条件,则将这些选项传递给minimatch
  • 相关阅读:
    兼容性测试中如何切换和管理多个JDK版本
    Win10的分辨率问题
    sql和access中截取字符串的区别
    ArcGIS制图之Sub Points点抽稀
    Office版本问题0x80029C4A
    ArcGIS制图之Maplex自动点抽稀
    ArcGIS制图之Subset工具点抽稀
    .NET破解之100%营销QQ辅助软件【更新】
    Office2016体验
    Log4net中的调错
  • 原文地址:https://www.cnblogs.com/jiaoshou/p/12185096.html
Copyright © 2011-2022 走看看