Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

outpipe

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

outpipe

write output to a file through shell commands

  • 1.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
571K
decreased by-6.3%
Maintainers
1
Weekly downloads
 
Created
Source

outpipe

write output to a file through shell commands

purpose

Suppose you have a tool like watchify or factor-bundle that write to multiple files or write to the same file more than once.

If you want to pipe the output of these tools to other programs, such as minification with the uglify command, it's very difficult! You might need to use the tool's API or use a separate command to watch for changes to the output files. Ick.

You don't get the elegance of something like:

$ browserify main.js | uglifyjs -cm | gzip > bundle.js.gz

Until now! With this library and a hypothetical version of watchify, you could do:

$ watchify main.js -dv -o 'uglifyjs -cm | gzip > bundle.js.gz'

example

Here's a small watcher program that will just copy input files to a destination, but transforms can be applied along the way with shell pipes and redirects.

var outpipe = require('outpipe');
var gaze = require('gaze');
var fs = require('fs');

var minimist = require('minimist');
var argv = minimist(process.argv.slice(2), {
    alias: { o: 'output' }
});

var file = argv._[0];
gaze(file, function (err, w) {
    w.on('changed', read);
});
read();

function read () {
    var r = fs.createReadStream(file);
    r.pipe(outpipe(argv.output));
}

We can run the program with a single output file:

$ node watch.js input/x.js -o output/hmm.js

which just copies x.js to output/hmm.js whenever x.js changes.

We could also run a minification step using the uglify command:

$ node watch.js input/x.js -o 'uglifyjs -cm > output/wow.js'

or we can just print the size of the minified and gzipped output to stdout:

$ node watch.js input/x.js -o 'uglifyjs -cm | gzip | wc -c'
123

or we could write that size to a file:

$ node watch.js input/x.js -o 'uglifyjs -cm | gzip | wc -c > size.txt'

methods

var outpipe = require('outpipe')

var w = outpipe(cmd, opts={})

Return a writable stream w that will pipe output to the command string cmd.

If cmd has no operators (| or >), it will write to a file.

Otherwise, each command between pipes will be executed and output is written to a file if > is given.

opts can be:

  • opts.env - an object mapping environment variables to their values or a function (key) {} that returns the values.

stdout and stderr are forwarded to process.stdout and process.stderr if unhandled in the command.

install

With npm do:

npm install outpipe

license

MIT

Keywords

FAQs

Package last updated on 04 Apr 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc