Skip to content

Takes your file stream and splits them into many streams based on filters

Notifications You must be signed in to change notification settings

MasterOfMalt/gulp-hydra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gulp-hydra Build Status Build Status

Cut off one head, two more will take its place. Heil Hydra

Hydra takes your vinyl file stream and splits them into many streams based on filters while preserving the core stream.

This was written because we had an issue using our other gulp-plugin gulp-spritesmash with the internally split streams that gulp.spritesmith provides img and css.

Hydra will take our stream and split it based on default or custom filter functions allowing for as much finegrained control as we like.

Install

$ npm install --save-dev gulp-hydra

Usage

var gulp = require('gulp');
var hydra = require('gulp-hydra');

gulp.task('default', function() {
  var stream = gulp.src(files)
    .pipe(hydra({
      text: function() {
        var ext = path.extname(file.path);
        return ['.txt', '.md'].indexOf(ext) !== -1;
      },
    }));
  return stream.text
    .pipe(gulp.dest('dist'));
});

However we do provide a nicer syntax for this

gulp.task('default', function() {
  var stream = gulp.src(files)
    .pipe(hydra({
      text: { type: 'ext', filters: ['.txt', '.md'] }
    }));
  return stream.text
    .pipe(gulp.dest('dist'));
});

The main stream returned directly by hydra is an unaltered stream of all files passed in.

API

hydra(options)

options

The options object is a associative array of key value pairs. The name of the value will be the name of your return stream and the value should be either:

Filter function

A function which takes a vinyl file and returns true or false if it should be filtered into your stream.

Default filters

Their are currently two default filters:

Extension → ext

Filters on the file extension, useful for outputing different file types in to different directories.

This filter will add a dot to the front of the extension if you forget to do so.

{
  type: 'ext',
  filters: '.css' or ['.css', '.md']
}
Filename → filename

Filters on the files base name (including extension), useful for direct targeting of files.

{
  type: 'filename',
  filters: 'myfile.txt' or ['sprite.png', 'sprite.css']
}

About

Takes your file stream and splits them into many streams based on filters

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published