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

karma-vinyl-streams

v0.1.3

Published

Use gulp plugins instead of Karma preprocessors

Downloads

7

Readme

karma-vinyl-streams Build Status

Use gulp plugins instead of Karma preprocessors

Install

npm install --save-dev karma-vinyl-streams

Example config

var gulpPlugin1 = require('gulp-plugin1');
var gulpPlugin2 = require('gulp-plugin2');

module.exports = function (config) {
    config.set({
        frameworks: ['jasmine', 'vinyl-streams'],

        files: [
            'src/*.js'
        ],

        browsers: ['PhantomJS'],

        vinylStreams: function (src, dest) {
            src('**/*.js')
                .pipe(gulpPlugin1())
                .pipe(gulpPlugin2())
                .pipe(dest());
        }
    });
};

The vinylStreams config function API

Your config function is called with a src function and a dest function each time Karma's file list is modified. They work a lot like gulp.src and gulp.dest, only instead of reading from and writing to disk, they provide access to and modify Karma's file list.

src([pattern])

Create a stream of Karma files, optionally matching pattern. If pattern is omitted, it defaults to **/*. The pattern is resolved against Karma's basePath.

src([readableStream])

Sneak some files Karma doesn't know about into Karma. Useful if, say, you wanted to use Browserify or something. It's your responsibility to ensure the stream contains Vinyl file objects before it's piped to dest.

src.modified([pattern])

Create a stream of Karma files that have been modified (changed or added) since the last run. Same pattern rules apply as with src.

dest()

Commit a stream's contents back to Karma's file list. This must be called once for each src, or you'll be in big, big trouble.

Differences from gulp

Each pipeline (the chain of pipes between src and dest calls) is executed serially. That is, unlike gulp, which will kick off each stream immediately when you ask for it and run them concurrently, karma-vinyl-streams will pause each stream until previous ones have finished executing.

Also, src will not load arbitrary files from the filesystem; they must be specified in Karma's files config. Or you can pipe in your own stream of files to src.

Recipes

browserify

See the browserify integration test for an example config.

TypeScript

See the TypeScript integration test for an example config.

Sourcemaps with karma-source-map-support and gulp-sourcemaps

'Cause not having real line numbers is a drag.

Note that this doesn't work in PhantomJS, sadly. See phantomjs/12289.

var sourcemaps = require('gulp-sourcemaps');

module.exports = function (config) {
    config.set({
        frameworks: ['jasmine', 'vinyl-streams', 'source-map-support'],

        browsers: ['Chrome'],

        vinylStreams: function (src, dest) {
            src()
                .pipe(sourcemaps.init())
                .pipe(/* plugins with sourcemap support */)
                .pipe(sourcemaps.write({sourceRoot: __dirname}))
                .pipe(dest());
        }
    });
};