# vinyl-view

> Extends vinyl with render and compile methods, and properties used for rendering templates.

Latest version **2.0.1** (published 2017-02-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install vinyl-view
pnpm add vinyl-view
yarn add vinyl-view
bun add vinyl-view
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2017-02-09 |
| First published | 2016-06-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.10.0 |
| Dependencies | 7 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Jon Schlinkert |
| Maintainers | doowb, jonschlinkert |
| Keywords | assemble, collection, compile, context, engine, handlebars, render, template, templates, view, views, vinyl |

## Links

- npm: https://www.npmjs.com/package/vinyl-view
- Repository: https://github.com/jonschlinkert/vinyl-view
- Issues: https://github.com/jonschlinkert/vinyl-view/issues
- npm.io page: https://npm.io/package/vinyl-view

## Dependencies (7)

- [isobject](https://npm.io/package/isobject.md) ^3.0.0
- [arr-union](https://npm.io/package/arr-union.md) ^3.1.0
- [lazy-cache](https://npm.io/package/lazy-cache.md) ^2.0.2
- [vinyl-item](https://npm.io/package/vinyl-item.md) ^1.0.0
- [engine-base](https://npm.io/package/engine-base.md) ^0.1.2
- [extend-shallow](https://npm.io/package/extend-shallow.md) ^2.0.1
- [define-property](https://npm.io/package/define-property.md) ^0.2.5

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 2.0.1 (latest) — 2017-02-09
- 2.0.0 — 2017-02-08
- 1.0.0 — 2016-12-29
- 0.1.2 — 2016-07-23
- 0.1.1 — 2016-07-23
- 0.1.0 — 2016-06-01

## README

# vinyl-view [![NPM version](https://img.shields.io/npm/v/vinyl-view.svg?style=flat)](https://www.npmjs.com/package/vinyl-view) [![NPM monthly downloads](https://img.shields.io/npm/dm/vinyl-view.svg?style=flat)](https://npmjs.org/package/vinyl-view)  [![NPM total downloads](https://img.shields.io/npm/dt/vinyl-view.svg?style=flat)](https://npmjs.org/package/vinyl-view) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/vinyl-view.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/vinyl-view)

> Extends vinyl with render and compile methods, and properties used for rendering templates.

## Install

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

```sh
$ npm install --save vinyl-view
```

## Usage

Use the same way you would use a [vinyl](https://github.com/gulpjs/vinyl) file:

```js
var View = require('vinyl-view');
var view = new View({path: 'foo'});
```

## API

### [View](index.js#L26)

Create an instance of `View`. Optionally pass a default object to use.

**Params**

* `view` **{Object}**

**Example**

```js
var view = new View({
  path: 'foo.html',
  contents: new Buffer('...')
});
```

### [.compile](index.js#L57)

Synchronously compile a view.

**Params**

* `locals` **{Object}**: Optionally pass locals to the engine.
* `returns` **{Object}** `View`: instance, for chaining.

**Example**

```js
var view = page.compile();
view.fn({title: 'A'});
view.fn({title: 'B'});
view.fn({title: 'C'});
```

### [.renderSync](index.js#L75)

Synchronously render templates in `view.content`.

**Params**

* `locals` **{Object}**: Optionally pass locals to the engine.
* `returns` **{Object}** `View`: instance, for chaining.

**Example**

```js
var view = new View({content: 'This is <%= title %>'});
view.renderSync({title: 'Home'});
console.log(view.content);
```

### [.render](index.js#L101)

Asynchronously render templates in `view.content`.

**Params**

* `locals` **{Object}**: Context to use for rendering templates.

**Example**

```js
view.render({title: 'Home'}, function(err, res) {
  //=> view object with rendered `content`
});
```

### [.context](index.js#L132)

Create a context object from `locals` and the `view.data` and `view.locals` objects. The `view.data` property is typically created from front-matter, and `view.locals` is used when a `new View()` is created.

This method be overridden either by defining a custom `view.options.context` function
to customize context for a view instance, or static [View.context](#view-context) function to customize
context for all view instances.

**Params**

* `locals` **{Object}**: Optionally pass a locals object to merge onto the context.
* `returns` **{Object}**: Returns the context object.

**Example**

```js
var page = new View({path: 'a/b/c.txt', locals: {a: 'b', c: 'd'}});
var ctx = page.context({a: 'z'});
console.log(ctx);
//=> {a: 'z', c: 'd'}
```

### [.isType](index.js#L148)

Returns true if the view is the given `viewType`. Returns `false` if no type is assigned. When used with vinyl-collections, types are assigned by their respective collections.

**Params**

* `type` **{String}**: (`renderable`, `partial`, `layout`)

**Example**

```js
var view = new View({path: 'a/b/c.txt', viewType: 'partial'})
view.isType('partial');
```

### [.View.context](index.js#L248)

Define a custom static `View.context` function to override default `.context` behavior. See the [context](#context) docs for more info.

**Params**

* `locals` **{Object}**
* `returns` **{Object}**

**Example**

```js
// custom context function
View.context = function(locals) {
  // `this` is the view being rendered
  return locals;
};
```

## About

### Contributing

Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).

### Building docs

_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_

To generate the readme, run the following command:

```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```

### Running tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

```sh
$ npm install && npm test
```

### Author

**Jon Schlinkert**

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

### License

Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
MIT

***

_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.2, on February 08, 2017._

---
_Source: https://npm.io/package/vinyl-view · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
