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

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


    gulp-notify这是一款gulp通知插件。

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

    安装

    一键安装不多解释

    npm install --save-dev gulp-notify
    

    使用

    例1:

    var notify = require("gulp-notify");
    gulp.src("./src/test.ext")
      .pipe(notify("Hello Gulp!"));
    

    例2:

    var notify = require("gulp-notify");
    gulp.src("./src/test.ext")
      .pipe(notify("Found file: <%= file.relative %>!"));
    

    有关更多输入,请参见示例,或参见API部分。

    注释/提示
    即使出错,gulp-notify也会传递vinyl files 。因此,如果您使用的是gulp-plumber ,如果通知程序返回错误,则运行不会中断。
    如果你想通知错误,可以使用gulp-plumber 不中断运行,迫使你不得不重新启动gulp。
    您可以使用notify.onError()作为gulp-plumbererrorHandler ,如下所示:

    gulp.src("../test/fixtures/*")
          .pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")}))
          .pipe(through(function () {
            this.emit("error", new Error("Something happend: Error message!"))
          }));
    

    API

    • notify(String)
      用于通知流中每个数据的消息。字符串可以是lodash模板,因为它通过gulp-util.template传递。
    • notify(Function)
      类型: function(VinylFile)
      来自gulp流的Vinyl File作为参数传入。
      该函数的结果可以是用作消息的字符串或选项对象(请参见下文)。如果返回值是一个字符串,则它可以是lodash模板,因为它是通过gulp-util.template传递的。
      如果false从函数返回,则通知将不会运行。
    • notify(options)

    选项传递到报告程序上,因此在Windows上,您可以定义Growl主机,在Mac上,您可以传递contentImage,依此类推。
    有关 所有选项,请参阅节点通知程序

    默认通知值:
    * 定期通知的Gulp徽标
    * 错误时倒置了Gulp徽标
    * 在Mac上,青蛙声音错误。

    另请参见高级示例

    • options.onLast
      类型:Boolean
      默认值:false
      如果通知仅应在流的最后一个文件上发生。默认情况下,每个文件都会触发通知。
    • options.emitError
      类型:Boolean
      默认值:false
      返回的流是否应该发出错误。如果emitErrortrue,则必须.on('error') 手动处理,以防通知程序(gulp-notify)失败。如果false设置了默认值,则不会发出错误,而只是将其打印到控制台。
      这意味着您可以在CI系统上运行通知程序,而无需选择退出,而只是让其正常地失败。
    • options.message
      类型:String
      默认:流中的文件路径
      您希望附加到文件的消息。字符串可以是lodash模板,因为它通过gulp-util.template传递。
      范例:Created <%= file.relative %>
    • 作为功能函数
      类型: Function(vinylFile)
      请参阅notify(Function)
    • options.title
      类型:String
      默认:“ Gulp通知”
      通知的标题。字符串可以是lodash模板,因为它通过gulp-util.template传递。
      范例:Created <%= file.relative %>
    • 作为功能函数
      类型: Function(vinylFile)
      请参阅notify(Function)
    • options.templateOptions
      类型:Object
      默认值:{}
      传递给lodash模板的对象,用于传递给模板的其他属性。
    gulp.src("../test/fixtures/*")
        .pipe(notify({
          message: "Generated file: <%= file.relative %> @ <%= options.date %>",
          templateOptions: {
            date: new Date()
          }
        }))
    
    • options.notifier
      类型:Function(options, callback)
      默认:node-notifier模块
      通过传入函数来交换通知程序。该函数需要两个参数:optionscallback
      通知完成后必须调用回调。选项将同时包含标题和消息。
      请参阅notify.withReporter语法糖。

    notify.on(event, function (notificationOptions)) - Events
    如果该wait选项设置为true,则通知者将触发事件clicktimeout,无论用户单击通知还是超时。您在主通知对象(而不是产生流)上侦听这些事件。

    var notify = require('gulp-notify');
    
    notify.on('click', function (options) {
      console.log('I clicked something!', options);
    });
    
    notify.on('timeout', function (options) {
      console.log('The notification timed out', options);
    });
    
    gulp.task("click", function () {
      return gulp.src("some/glob/**")
        .pipe(notify({ message: 'Click or wait', wait: true }));
    });
    

    notify.withReporter(Function)
    类型: Reporter
    包装options.notifier仅使用传入的报告程序返回新的通知功能。

    例:

    var custom = notify.withReporter(function (options, callback) {
      console.log("Title:", options.title);
      console.log("Message:", options.message);
      callback();
    });
    
    gulp.src("../test/fixtures/1.txt")
        .pipe(custom("This is a message."));
    

    这将与

    gulp.src("../test/fixtures/1.txt")
        .pipe(notify({
          message: "This is a message."
          notifier: function (options, callback) {
            console.log("Title:", options.title);
            console.log("Message:", options.message);
            callback();
          }
        }));
    

    但是,很多漂亮。

    notify.onError()

    using完全相同的API notify(),但是在vinyl File 传递a的地方,传递错误对象。

    例:

    gulp.src("../test/fixtures/*")
          .pipe(through(function () {
            this.emit("error", new Error("Something happend: Error message!"))
          }))
          .on("error", notify.onError(function (error) {
            return "Message to the notifier: " + error.message;
          }));
    

    或者简单地:

    gulp.src("../test/fixtures/*")
          .pipe(through(function () {
            this.emit("error", new Error("Something happend: Error message!"))
          }))
          .on("error", notify.onError("Error: <%= error.message %>"));
    
    gulp.src("../test/fixtures/*")
          .pipe(through(function () {
            this.emit("error", new Error("Something happend: Error message!"))
          }))
          .on("error", notify.onError({
            message: "Error: <%= error.message %>",
            title: "Error running something"
          }));
    

    onError()终点不支持lodash.template
    onError()会自动为您结束视频流。使观看更加轻松。

    notify.logLevel(level)
    类型:Integer
    默认值:2
    设置是否使用记录器。如果日志级别设置为0,将不使用任何日志记录。如果未传递新的日志级别,则返回当前日志级别。

    • 0:无日志记录
    • 1:登录错误
    • 2:记录错误和常规通知。
      如果将logging设置为> 0,则将记录标题和传递给的消息,gulp-notify如下所示:
    ➜  gulp-notify git:(master) ✗ gulp --gulpfile examples/gulpfile.js one
    [gulp] Using file /Users/example/gulp-notify/examples/gulpfile.js
    [gulp] Working directory changed to /Users/example/repos/gulp-notify/examples
    [gulp] Running 'one'...
    [gulp] Finished 'one' in 4.08 ms
    [gulp] gulp-notify: [Gulp notification] /Users/example/gulp-notify/test/fixtures/1.txt
    

    禁用 gulp-notify
    如果您运行的系统处理通知的能力很差,或者只是不想使用,gulp-notify而您的项目可以呢?您可以gulp-notify 使用环境变量禁用它DISABLE_NOTIFIER

    export DISABLE_NOTIFIER=true;
    

    这将禁用所有方法。notify()notify.onErrornotify.withReporter

    例子:
    要查看从根目录运行的所有示例:

    $ gulp --gulpfile examples/gulpfile.js --tasks
    [gulp] Using file /Users/example/gulp-notify/examples/gulpfile.js
    [gulp] Working directory changed to /Users/example/gulp-notify/examples
    [gulp] Tasks for /Users/example/gulp-notify/examples/gulpfile.js
    [gulp] ├── multiple
    [gulp] ├── one
    [gulp] ├── message
    [gulp] ├── customReporter
    [gulp] ├── template
    [gulp] ├── templateadv
    [gulp] ├── function
    [gulp] ├── onlast
    [gulp] ├── advanceMac
    [gulp] ├── error
    [gulp] ├── forceGrowl
    [gulp] └── customError
    

    运行示例:

    $ gulp --gulpfile examples/gulpfile.js multiple
    [gulp] Using file /Users/example/gulp-notify/examples/gulpfile.js
    [gulp] Working directory changed to /Users/example/gulp-notify/examples
    [gulp] Running 'multiple'...
    [gulp] Finished 'multiple' in 3.75 ms
    

    作为jshint报告员

    gulp-notify可以轻松用作jshint报告程序。当jshint在乙烯基文件上公开结果时,我们可以在如下函数中使用它们:

    gulp.task('lint', function() {
      gulp.src('/src/**/*.js')
        .pipe(jshint())
        // 使用gulp-notify作为jshint报告器 
        .pipe(notify(function (file) {
          if (file.jshint.success) {
            // 不显示的东西,如果成功
            return false;
          }
    
          var errors = file.jshint.results.map(function (data) {
            if (data.error) {
              return "(" + data.error.line + ':' + data.error.character + ') ' + data.error.reason;
            }
          }).join("
    ");
          return file.relative + " (" + file.jshint.results.length + " errors)
    " + errors;
        }));
    });
    

    如果您在中使用消息功能gulp-notify,则不会显示该消息。直接使用function和都是如此{ message: function () {}}

  • 相关阅读:
    (1)李宏毅深度学习-----机器学习简介
    Git命令之不得不知的git stash暂存命令
    Http2升级方案调研
    神奇的 SQL 之别样的写法 → 行行比较
    熔断机制
    限流算法
    状态机
    布隆过滤器
    负载均衡算法
    K8S Ingress
  • 原文地址:https://www.cnblogs.com/jiaoshou/p/12185392.html
Copyright © 2011-2022 走看看