Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hughsk/vinyl-source-stream
:cyclone: Use conventional text streams at the start of your gulp or vinyl pipelines
https://github.com/hughsk/vinyl-source-stream
Last synced: 9 days ago
JSON representation
:cyclone: Use conventional text streams at the start of your gulp or vinyl pipelines
- Host: GitHub
- URL: https://github.com/hughsk/vinyl-source-stream
- Owner: hughsk
- License: mit
- Created: 2014-01-11T12:10:37.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2017-12-23T05:33:22.000Z (almost 7 years ago)
- Last Synced: 2024-04-13T22:53:42.266Z (7 months ago)
- Language: JavaScript
- Homepage:
- Size: 14.6 KB
- Stars: 332
- Watchers: 5
- Forks: 29
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# vinyl-source-stream [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/vinyl-source-stream&title=vinyl-source-stream&description=hughsk/vinyl-source-stream%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) #
Use conventional text streams at the start of your
[gulp](http://github.com/gulpjs/gulp) or
[vinyl](http://github.com/wearefractal/vinyl) pipelines, making for nicer
interoperability with the existing npm stream ecosystem.Take, for example, [browserify](http://browserify.org/). There are the
[gulp-browserify](https://github.com/deepak1556/gulp-browserify) and
[gulpify](https://github.com/hughsk/gulpify) plugins, which you can use in
combination with gulp to get browserify working in your build. Unfortunately,
these plugins come with additional overhead: an extra GitHub repository, npm
module, maintainer, tests, semantics, etc. It's much simpler
in this case to use the original module directly where you can, which is what
`vinyl-source-stream` handles for you.## Usage ##
[![vinyl-source-stream](https://nodei.co/npm/vinyl-source-stream.png?mini=true)](https://nodei.co/npm/vinyl-source-stream)
Our previous example, browserify, has a streaming API for its output bundles
which you can use directly. This module is just a bridge that makes it
simple to use conventional text streams such as this in combination with gulp.
Here's an example of using `vinyl-source-stream` and `browserify`, compared to
using `gulpify`:``` javascript
var source = require('vinyl-source-stream')
var streamify = require('gulp-streamify')
var browserify = require('browserify')
var uglify = require('gulp-uglify')
var gulpify = require('gulpify')
var rename = require('gulp-rename')
var gulp = require('gulp')// using gulpify:
gulp.task('gulpify', function() {
gulp.src('index.js')
.pipe(gulpify())
.pipe(uglify())
.pipe(rename('bundle.js'))
.pipe(gulp.dest('./'))
})// using vinyl-source-stream:
gulp.task('browserify', function() {
var bundleStream = browserify('./index.js').bundle()bundleStream
.pipe(source('index.js'))
.pipe(streamify(uglify()))
.pipe(rename('bundle.js'))
.pipe(gulp.dest('./'))
})
```Not all that different, really! The nice thing here is that you're getting the
up-to-date browserify API and don't have to worry about the plugin's available
functionality. Of course, these same benefits apply for any readable text
stream you can find on npm.## API ##
### `stream = sourceStream([filename])` ###
Creates a through stream which takes text as input, and emits a single
vinyl file instance for streams down the pipeline to consume.`filename` is a "pretend" filename to use for your file, which some streams
might use to determine various factors such as the final filename of your file.
It should be a string, and though recommended, using this argument is optional.## License ##
MIT. See [LICENSE.md](http://github.com/hughsk/vinyl-source-stream/blob/master/LICENSE.md) for details.