Gulp 插件 —— gulp-util

gulp-util 为 Gulp 插件提供的一组工具方法

Util Functions

包括了一下方法:

  • log(msg...)
  • colors
  • replaceExtension(path, newExtension)
  • beep()
  • isStream(obj)
  • isBuffer(obj)
  • template(string[, data])
  • new File(obj)
  • noop()
  • buffer(cb)
  • new PluginError(pluginName, message[, options])

log(msg...)

  • 用于打日志,它已经自动为你添加了[gulp]前缀以及所有你希望日志应该具备的一切特性。
  • 如果你传入了多个参数,它会把他们拼接在一起并用空格分隔开。
  • 使用 colors 作为默认的配色方案
  • values (files, module names, etc.) = cyan
  • numbers (times, counts, etc) = magenta
gutil.log('stuff happened', 'Really it did', gutil.colors.magenta('123'));

colors

chalk 的实例

chalk 是终端字符样式美化工具库

replaceExtension(path, newExtension)

  • 替换文件的扩展名。
gutil.replaceExtension('file.coffee', '.js'); // file.js

isStream(obj)

  • 判断一个对象是否为Stream

isBuffer(obj)

  • 判断一个对象是否为Buffer

template(string[, data])

  • 这是一个对 lodash.template 方法的封装,你必须传入一个合法的 Gulp File 对象,用户才能使用它,否则将返回一个错误。注意你无法更改标识符。你可以查看 lodash 来了解更多信息。

new File(obj)

var file = new gutil.File({
  base: path.join(__dirname, './fixtures/'),
  cwd: __dirname,
  path: path.join(__dirname, './fixtures/test.coffee')
});

noop()

  • 返回一个可以直接传入数据,不做其他任何操作的stream
// gulp should be called like this :
// $ gulp --type production
gulp.task('scripts', function() {
  gulp.src('src/**/*.js')
    .pipe(concat('script.js'))
    .pipe(gutil.env.type === 'production' ? uglify() : gutil.noop())
    .pipe(gulp.dest('dist/'));
});

buffer(cb)

  • es.wait 类似,区别是后者将字符buffer进一个字符串, 而前者将一切buffer进一个数组,这点对于file对象来说非常有用。
  • 返回一个可以pipe进数据的Stream
  • 当写入结束时,Stream 会发射一个 data 事件,这个data与传入回调中的数组是同一个。
  • 回调是可选的,它接收两个参数 errdata
gulp.src('stuff/*.js')
  .pipe(gutil.buffer(function(err, files) {

  }));

new PluginError(pluginName, message[, options])

  • pluginName 是你的插件的 module 名
  • message 可以是一个 string 或者一个存在的 error
  • 默认不会显示调用 stack。如果你需要查看调用栈信息来帮助差错,将options. showStack 为 true。
  • 如果你向 message 传入一个 error,调用栈将通过 message 来展示,否则将创建一个新的。
  • 注意: 如果你传入了一个自定义的栈名,你需要同时传入一个 message
  • Error 的属性将显示在err.toString()的结果中。 可以通过设置options中的 {showProperties: false} 来关闭它。

下面的几种实例化形式都是ok的:

var err = new gutil.PluginError('test', {
  message: 'something broke'
});

var err = new gutil.PluginError({
  plugin: 'test',
  message: 'something broke'
});

var err = new gutil.PluginError('test', 'something broke');

var err = new gutil.PluginError('test', 'something broke', {showStack: true});

var existingError = new Error('OMG');
var err = new gutil.PluginError('test', existingError, {showStack: true});

results matching ""

    No results matching ""