# assemble-streams [![NPM version](https://img.shields.io/npm/v/assemble-streams.svg?style=flat)](https://www.npmjs.com/package/assemble-streams) [![NPM downloads](https://img.shields.io/npm/dm/assemble-streams.svg?style=flat)](https://npmjs.org/package/assemble-streams) [![Build Status](https://img.shields.io/travis/assemble/assemble-streams.svg?style=flat)](https://travis-ci.org/assemble/assemble-streams)

Assemble pipeline plugin for pushing a view collection into a vinyl stream.

## Install

Install with [npm](https://www.npmjs.com/):

```sh
$ npm install assemble-streams --save
```

## Usage

This plugin can be used with [assemble](https://github.com/assemble/assemble), [verb](https://github.com/verbose/verb) or any other application based on [templates](https://github.com/jonschlinkert/templates).

```js
var assemble = require('assemble');
var streams = require('assemble-streams');

// create your application
var app = assemble();
// register the plugin
app.use(stream());

// use the plugin on app
app.toStream('pages')
  .pipe(app.dest('site/'));

// use the plugin on a collection
app.pages.toStream()
  .pipe(app.dest('site/'));

// use the plugin on a view
app.pages.getView('home').toStream()
  .pipe(app.dest('site/'));
```

See the [tests](./test.js) for more examples.

## API

### [app.toStream](index.js#L48)

Push a view collection into a vinyl stream.

**Params**

* `collection` **{String}**: Name of the collection to push into the stream.
* **{Function}**: Optionally pass a filter function to use for filtering views.
* `returns` **{Stream}**

**Example**

```js
app.toStream('posts', function(file) {
  return file.path !== 'index.hbs';
})
```

### [collection.toStream](index.js#L100)

Push a view collection into a vinyl stream.

**Params**

* **{Function}**: Optionally pass a filter function to use for filtering views.
* `returns` **{Stream}**

**Example**

```js
app.posts.toStream(function(file) {
  return file.path !== 'index.hbs';
})
```

### [view.toStream](index.js#L135)

Push the current view into a vinyl stream.

* `returns` **{Stream}**

**Example**

```js
app.pages.getView('a.html').toStream()
  .on('data', function(file) {
    console.log(file);
    //=> <Page "a.html" <Buffer 2e 2e 2e>>
  });
```

## Related projects

You might also be interested in these projects:

* [assemble-loader](https://www.npmjs.com/package/assemble-loader): Assemble plugin (^0.6.0) for loading globs of views onto custom view collections. Also works with… [more](https://www.npmjs.com/package/assemble-loader) | [homepage](https://github.com/assemble/assemble-loader)
* [assemble-render-file](https://www.npmjs.com/package/assemble-render-file): Assemble plugin for rendering views in a vinyl pipeline. | [homepage](https://github.com/assemble/assemble-render-file)
* [assemble](https://www.npmjs.com/package/assemble): Assemble is a powerful, extendable and easy to use static site generator for node.js. Used… [more](https://www.npmjs.com/package/assemble) | [homepage](https://github.com/assemble/assemble)

## Contributing

Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/assemble/assemble-streams/issues/new).

## Building docs

Generate readme and API documentation with [verb](https://github.com/verbose/verb):

```sh
$ npm install verb && npm run docs
```

Or, if [verb](https://github.com/verbose/verb) is installed globally:

```sh
$ verb
```

## Running tests

Install dev dependencies:

```sh
$ npm install -d && npm test
```

## Author

**Jon Schlinkert**

* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)

## License

Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT license](https://github.com/assemble/assemble-streams/blob/master/LICENSE).

***

_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on May 24, 2016._