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

shellton

v5.1.0

Published

execute external processed with a simple API

Downloads

3,921

Readme

shellton

Build Test Coverage Code Climate Downloads Version

Install

npm install --save shellton

Use

Basic example

var shellton = require('shellton');

shellton('echo all the things', function(err, stdout, stderr) {
    console.log(stdout); // all the things
});

Using IO streams

You can pipe the standard output streams from the child process, as such:

var output = fs.createWriteStream('script-output.txt');

shellton({
    task: 'node script.js',
    stdout: output
    // you can also do stderr here, if you need
    // or just pipe it to the parent process io stream
    stderr: process.stderr
}, function(err, stdout, stderr) {
    console.log('script.js has exited');
});

You can also provide input to the external process, as such:

var input = fs.createReadStream('my-script.js');

shellton({
    task: 'node',
    stdin: input
}, function(err, stdout, stderr) {
    console.log('my-script.js has exited');
});

Use your imagination here, and you can come up with some much more useful cases.

var shellton = require('shellton');
var through = require('through2');
var chalk = require('chalk');

function colorStream(name, writeStream) {
    writeStream = writeStream || process.stdout;
    
    var colorFunc = (chalk[name] || chalk.white).bind(chalk);
    
    var stream = through();
    stream.on('data', function(chunk) {
        writeStream.write(colorFunc(chunk));
    });
    
    return stream;
}

var input = through();
// write to the parent's output stream in green
var output = colorStream('green', process.stdout);
// write to the parent's error stream in red
var error = colorStream('red', process.stderr);

shellton({
    task: 'node',
    stdin: input,
    stdout: output,
    stderr: error
});

// use any dynamically generated javascript
input.write('console.log("output is green");');
input.write('console.error("errors are red");');
input.end();

API

shellton(options, callback)

options {string | Object} : The options defining the external task to execute. This parameter is required.

  • When given a string, this is the command line command being executed. You can supply a full command, as you would normally type into bash or the Windows command prompt.
  • When given an object, the following properties are available:
    • task {string} : the command to executed.
    • stdin {Stream} : a stream to pipe into the command.
    • stdout {Stream} : a stream to where the standard output of the command will be piped.
    • stderr {Stream} : a stream to where the standard error of the command will be piped.
    • cwd {string} : the directory from where the command will be executed. The default is the current directory of the parent process.
    • env {Object} : the environment variables for the child process. Values here will be merged with an overwrite values in the current process.env.
    • encoding {string} : the encoding to use to the data provided to the callback. The options are utf8 and buffer, with utf8 being the default.

callback {function} : The callback to call when the child process exists. This parameter is optional. It receives the following parameters, in order:

  • error {Error} : An error that occurred when executing the command. This generally means the command exited with a code other than 0. error.code specifies the exit code of the command.
  • stdout {string|Buffer} : A string representation of the standard output of the command. If the command outputs binary, you will likely want to read directly from stdout in the options object.
  • stderr {string|Buffer} : A string representation of the standard error of the command. If the command outputs binary, you will likely want to read directly from stderr in the options object.

Analytics