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

@codefeathers/cmd-js

v0.6.0

Published

Super simple cli framework for nodejs.

Downloads

10

Readme

CMDjs

Yet another CLI framework.

Note: CMDjs is very minimal and was written for use in my other apps at @codefeathers and elsewhere. It was mostly an experiment of "how difficult could it be", and I'm happy to see how it turned out. If you feel like the minimal, friendly interface of CMDjs is for you, then go full steam ahead!

Usage

CMDjs accepts a logic tree of commands and functions and executes the function that matches your user's command.

This module is best explained with an example. (A slightly more elaborate example is available in this repo: sample).

#!/usr/bin/node

const CMDjs = require('@codefeathers/cmd-js');
const { log } = console;

const members = [ 'Okabe Rintaro', 'Shiina Mayuri', 'Hashida Itaru', 'Makise Kurisu' ];

const cmd = new CMDjs({
	'-h, --help': _ => log('Usage:\n list\n  list all future gadget laboratory members'),
	'ls, list': _ => log(members.join('\n')),
	'@default': _ => log('Use --help to get help text'),
});

cmd.use({ 'password': _ => log('El psy kongroo.') }); // Add more commands!
cmd.use('/home/mkr/.plugins'); // Add paths!

cmd.start(process);

Save this with any file name, for example, sg-cli (extensions for executables are optional in Linux).

Make this file executable by doing chmod a+x sg-cli. And then you can do this:

[mkr@codefeathers]$ ./sg-cli -h
Usage:
 list
   list all future gadget laboratory members

[mkr@codefeathers]$ ./sg-cli list
Okabe Rintaro
Shiina Mayuri
Hashida Itaru
Makise Kurisu

You can add your file to PATH and also invoke sg-cli directly without specifying path.

Nesting

Because args are parsed by minimist and passed as an object to callbacks, effectively you can nest and branch with plain JavaScript.

Additionally, CMDjs allows you to do this:

'ls, list': {
	'-a, --all': // [Function],
	'-g, --good': // [Function],
	'-e, --evil': // [Function]
}

You can nest indefinitely in this pattern. If you need more flexibility, take things in your own hands and use the minimist object at any point in the tree!

Issues and PRs

Issues and PRs are most welcome. If there are uncaught bugs, please report! Keep in mind that CMDjs is designed to be backwards-compatible henceforth. Any changes should not break previous versions.