npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gulp-grep

v0.2.0

Published

A gulp plugin for filtering stream objects matching certain conditions

Downloads

547

Readme

gulp-grep

A gulp plugin for filtering out file objects from the stream based on a glob match or a conditional function.

Usage

Use case 1

Filter in file objects matching certain criteria and perform some actions on them.

// via a conditional function
var grep = require('gulp-grep'),
  deletedFilesFilter = grep(function(file) {
    return file.event === 'deleted';
  })

gulp.src(['app/**/*.*'], { read: false }) // set `read` to false if you don't want to read file contents
  .pipe(deletedFilesFilter)
  // only deleted files passed down from here on
  .pipe(doSomethingOnDeletedFiles())
  ... ... ... 
});
// via a glob
var grep = require('gulp-grep')

gulp.src('app/**/*.*', { read: false }) 
  // filter in CoffeeScript files
  .pipe(grep('**/*.coffee'))
  // only CoffeeScript files are passed downstream from here on
  .pipe(doSomethingOnCoffeeFiles())
  ... ... ... 
});

Use case 2

Filter in file objects matching certain criteria, perform some actions on them, then restore filtered-out file objects downstream to perform additional actions on them too.

Please note:

  • the stream filter needs to be created as {restorable: true} in order to be able to restore the filetered out by this filter objects later in the stream pipeline.
  • if you don't pipe allFilesFilter in the example below prior to restoring filtered-out objects, the latter will be joined with the filtered-in objects and passed downstream together.
// via a glob
var grep = require('gulp-grep'),
  coffee = require('gulp-coffee'),
  coffeeScriptFilter = grep(['**/*.coffee','!**/*-test.coffee'], { restorable: true }),
  htmlFilter = grep('**/*.html'),
  allFilesFilter = grep('**/*.*')

gulp.src(['app/**/*.*', 'test/*.js'],  { read: false })
  // filter in CoffeeScript files
  .pipe(coffeeScriptFilter)
  // perform some actions on filtered-in CoffeScript files
  .pipe(coffee())
  ... ... ... 
  // include this if you don't want coffee files passing downstream
  .pipe(allFilesFilter)
  // restore files previously filtered-out by `coffeeScriptFilter`
  .pipe(coffeeScriptFilter.restoreFilteredOut())
  // Filter in html files
  .pipe(htmlFilter)
  // perform some actions on filered in html files
  .pipe(html())
  ... ... ...
});

API

grep(pattern [, options])
  • pattern := String | Array | Function The pattern that you want to match against the file objects passing through the stream. It can be a string, array or a conditional function. String or array must be given as glob patterns (see node-glob for example of patterns). If specifying the pattern as a conditional function it will be called with a file object and it needs to return true or false for including or excluding this file object from the stream respectively.
  • options
    • restorable := true | false (default) Set this option to true if you want to be able to restore filtered-out objects downstream later on
    • debug := true | false (default) Set this option to true if you want to turn in debuging mode and see what exactly is going on under the hood.
    • ... any other option is passed through to minmatch module

License

MIT License