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 🙏

© 2026 – Pkg Stats / Ryan Hefner

plugsuit

v0.0.10

Published

A pluggable interface for building command-line tools

Readme

what is plugsuit

if you are the sort of person who creates command-line tools that do lots of discrete tasks which have little in common you may have come up with a way to separate the tasks as required for orthogonality, while keeping the shared code in one place. an example of a product that does this is awscli, which accomplishes this by hiding the majority of the code back in a web interface, with the code and error checking being done on the remote end, rather than locally on the machine running the commands.

plugsuit allows you to create small, largely-self-contained 'plugs' that contain code for doing things. rather than having to handle things like command-line argument parsing, 'usage' strings, handling improper arguments, and things of this nature, plugsuit allows you to focus on the actual code, and manages the actual running of the eva^W primary process in a consistent, unit-testable, easily-managed way.

if you find yourself with fifteen or more tasks that do different things but need to share configuration or libraries, and you're doing this all in the shell, plugsuit may be for you.

the code, show me the code

okay, so, plugsuit takes "plugs." an example of a plug follows (which is also in the examples directory):

// asuka.js
//   says some lovable, if over-enthusiastic things to the console
//   stolen shamelessly from: http://www.imdb.com/character/ch0018088/quotes

var meta = function () {
	return {
		'args' : {
			'eva-02'    : [ Boolean, 'Start Eva-02' ],
			'artillery' : [ Boolean, 'Take care of oncoming artillery' ],
			'shinji'    : [ Boolean, 'A Shinji appears!' ]
		},

		'name' : 'asuka',
		'abstract' : 'Various interactions with Asuka Langley Sôryû'
	}
};

var plug = function (args) {
	var replies = {
		'artillery' : 'Schwein-hund!',
		'shinji'    : 'How disgusting.',
		'eva-02'    : "You're thinking in Japanese, aren't you? If you MUST think, do it in German!"
	};

	Object.keys( args ).forEach( function (arg) {
		if (replies[arg]) {
			console.log( replies[arg] );
		}
	} );
};

module.exports = plug;
plug.meta      = meta;

this defines a 'task' as asuka, and we presume this lives in bin/asuka.js. we would then presumably create something that looks like

#!/usr/bin/env node

// eva-pilot.js
//   manage eva pilots for NERV

'use strict;'

require( 'plugsuit' ).init( 'bin' ).dispatch( process.argv )

accordingly, one should then be able to run:

$ eva-pilot.js asuka --artillery

and the results should be as expected.

no really, what is a plugsuit?

probably you should watch neon genesis evangelion.

author

@janearc, [email protected]