如何自己开发插件

Gulp工作原理

gulp插件的主函数主要是通过nodeJs流转换器through2来读取流文件; 讲读取到的流文件转为utf_8格式进行操作; 最后返回一个node stream(node流)

读取流文件

调用through.obj时传入的函数参数最终会覆盖stream._transform函数

image.png

文件转换并返回node流

  1. modules.exports = function(options){
  2. return through2.obj(function(file, enc, cb){
  3. var str = file.contents.toString();
  4. conslole.log(str) // 得到的是utf_8格式文件
  5. })
  6. }

vinyl

描述文件的元数据对象

image.png

  1. modules.exports = function(options){
  2. return through2.obj(function(file, enc, cb){
  3. conslole.log(file.path) // 获取文件的完整路径
  4. conslole.log(file.base) // 获取文件父目录路径
  5. conslole.log(file.relative) // 获取文件绝对路径
  6. conslole.log(file.contents) // 获取流格式内容
  7. conslole.log(file.cwd) // 获取文件的当前工作目录
  8. })
  9. }

transform._transform(chunk, encoding, callback)

感兴趣的话可以学习下nodejs流

  1. chunk:stream对象接收到的文件数据,该文件类型有三种:
  • stream:流数据,可以用file.isStream判断
  • buffer:二进制数据,gulp.src读取文件默认就是这个类型,可以用file.isBuffer判断
  • null:为空,表示没有数据,可以用file.isNull判断
  1. encoding:表示编码方式,一般不用,可以不管
  2. callback(error,data):回调函数,执行完代码后都要调用这个函数,告诉stream引擎,我们已经处理完了

    Gulp插件编写流程