星辰的笔记 2020-01-13
更多gulp常用插件使用请访问:gulp常用插件汇总
gulp-notify这是一款gulp通知插件。
一键安装不多解释
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 %>!"));
注释/提示
即使出错,gulp-notify
也会传递vinyl files
。因此,如果您使用的是gulp-plumber
,如果通知程序返回错误,则运行不会中断。
如果你想通知错误,可以使用gulp-plumber
不中断运行,迫使你不得不重新启动gulp。
您可以使用notify.onError()
作为gulp-plumber
的errorHandler
,如下所示:
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)
notify(Function)
function(VinylFile)
gulp
流的Vinyl File
作为参数传入。false
从函数返回,则通知将不会运行。notify(options)
默认通知值:选项传递到报告程序上,因此在Windows上,您可以定义Growl主机,在Mac上,您可以传递contentImage,依此类推。
有关 所有选项,请参阅节点通知程序
另请参见高级示例。
options.onLast
Boolean
false
options.emitError
Boolean
false
emitError
为true
,则必须.on(‘error‘)
手动处理,以防通知程序(gulp-notify)
失败。如果false
设置了默认值,则不会发出错误,而只是将其打印到控制台。options.message
String
lodash
模板,因为它通过gulp-util.template传递。Created <%= file.relative %>
。function(VinylFile)
notify(Function)
。options.title
String
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)
options
和callback
。notify.withReporter
语法糖。notify.on(event, function (notificationOptions)) - Events
如果该wait
选项设置为true
,则通知者将触发事件click
或timeout
,无论用户单击通知还是超时。您在主通知对象(而不是产生流)上侦听这些事件。
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
,则将记录标题和传递给的消息,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.onError
和notify.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("\n"); return file.relative + " (" + file.jshint.results.length + " errors)\n" + errors; })); });
如果您在中使用消息功能gulp-notify
,则不会显示该消息。直接使用function
和都是如此{ message: function () {}}
。