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

shellscript

v0.1.1

Published

Use shell commands directly from nodejs to make synchronous shell scripts.

Downloads

6

Readme

Overview

Use shell commands directly from nodejs, nice and synchronous, so you can build easy command line scripts in node much like in Ruby.

Sample

So much like Ruby in fact, that here are the samples in coffeescript first.

require('shellscript').globalize()
shell "ls ."

And pipelines...

require('shellscript').globalize()
shell "ls . | grep lib"

Or if you us just plain Javascript

require('shellscript').globalize()
shell("ls .");

And of course, you can subshell and capture output

require('shellscript').globalize()
stuff = $("ls .")

Functions

globalize()

Puts shellscript's functions on global, so you can call them without an intermediate variable or namespace, useful to make this feel a lot more like other languages with built in synchronous shelling.

shell(command, exitOnError)

This just runs a command using your current $SHELL or /bin/sh if not set. It pipes stdout and stderr into the parent, and blocks until complete. This is the workhorse make a shell script function.

If exitOnError is true, this will exit the process for any non 0 exit code. Handy if you just want to exit and avoid error checking the return object.

Returns

An object with properties:

  • pid: pid of the shelled process, now exited
  • exitCode: exit code of the shelled process
  • signalCode: signal on exit of the shelled process
  • stdout: standard out, captured as a string
  • stderr: standard error, captured as a string

$(command)

Much like shell above, but instead of returning process information, returns the string that is stdout, or empty for a non-zero exit code.

$(command, args...)

In this version, if you pass args, either as a CoffeeScript splat or JavaScript array, the command will be invoked directly without a subshell. This is a tiny bit faster, and sometimes what you need if you don't want to run a shell pipeline.