glob-stream

A Readable Stream interface over node-glob.

Usage no npm install needed!

<script type="module">
  import globStream from 'https://cdn.skypack.dev/glob-stream';
</script>

README

glob-stream

NPM version Downloads Build Status AppVeyor Build Status Coveralls Status Gitter chat

A Readable Stream interface over node-glob.

Usage

var gs = require('glob-stream');

var readable = gs('./files/**/*.coffee', { /* options */ });

var writable = /* your WriteableStream */

readable.pipe(writable);

You can pass any combination of glob strings. One caveat is that you cannot only pass a negative glob, you must give it at least one positive glob so it knows where to start. If given a non-glob path (also referred to as a singular glob), only one file will be emitted. If given a singular glob and no files match, an error is emitted (see also options.allowEmpty).

API

globStream(globs, options)

Takes a glob string or an array of glob strings as the first argument and an options object as the second. Returns a stream of objects that contain cwd, base and path properties.

Options

options.allowEmpty

Whether or not to error upon an empty singular glob.

Type: Boolean

Default: false (error upon no match)

options.dot

Whether or not to treat dotfiles as regular files. This is passed through to node-glob.

Type: Boolean

Default: false

options.silent

Whether or not to suppress warnings on stderr from node-glob. This is passed through to node-glob.

Type: Boolean

Default: true

options.cwd

The current working directory that the glob is resolved against.

Type: String

Default: process.cwd()

options.root

The root path that the glob is resolved against.

Note: This is never passed to node-glob because it is pre-resolved against your paths.

Type: String

Default: undefined (use the filesystem root)

options.base

The absolute segment of the glob path that isn't a glob. This value is attached to each glob object and is useful for relative pathing.

Type: String

Default: The absolute path segement before a glob starts (see glob-parent)

options.cwdbase

Whether or not the cwd and base should be the same.

Type: Boolean

Default: false

options.uniqueBy

Filters stream to remove duplicates based on the string property name or the result of function. When using a function, the function receives the streamed data (objects containing cwd, base, path properties) to compare against.

Type: String or Function

Default: 'path'

other

Any glob-related options are documented in node-glob. Those options are forwarded verbatim, with the exception of root and ignore. root is pre-resolved and ignore is joined with all negative globs.

Globbing & Negation

var stream = gs(['./**/*.js', '!./node_modules/**/*']);

Globs are executed in order, so negations should follow positive globs. For example:

The following would not exclude any files:

gs(['!b*.js', '*.js'])

However, this would exclude all files that started with b:

gs(['*.js', '!b*.js'])

License

MIT