shoutjs

Beautiful output for your ShellJS commands

Usage no npm install needed!

<script type="module">
  import shoutjs from 'https://cdn.skypack.dev/shoutjs';
</script>

README

ShoutJS

Make your ShellJS commands explicit and get a beautiful output.

Example

Get this:

With this:

var shout = require('shoutjs');

shout.mkdir('bleach');
shout.to('bleach/ichigo', 'Bankai!');
shout.rm('-rf', 'bleach');

Commands

Supported ShellJS commands are: cp, rm, mv, mkdir, to.

ShoutJS only wraps ShellJS commands which change the filesystem. For usage information, you can go here ShellJS.

There's only to which differs from ShellJS:

var shell = require('shelljs/global'),
    shout = require('shoutjs');

'Bankai!'.to('file');        // ShellJS
shout.to('file', 'Bankai!'); // ShoutJS

Theming

ShoutJS supports theming through Logan. So it's possible to customize ShoutJS output pretty much the way you want.

Here is the default theme:

// Default theme
shout.logan.set({
  cp    : ['  copy   % to %', 'cyan . cyan .'],
  rm    : ['  remove %     ', 'red          '],
  mv    : ['  move   % to %', 'cyan . cyan .'],
  mkdir : ['  create %     ', 'cyan         '],
  to    : ['  create %     ', 'cyan         '],
  exec  : ['  exec   %     ', 'yellow yellow']
});

To override it:

//  A bit more old fashioned theme...
shout.logan.set({
  cp   : ['cp % %', 'grey'],
  rm   : ['rm %  ', 'grey'],
  // ...
});

Adding new messages

In many cases, you may want to log more than ShellJS commands for your users.
The recommanded way is to use Logan.

Here's an example:

var shout = require('shoutjs'),
    logan = require('logan');

logan.set({
  info: '  info %', 'yellow'
});

logan.info('starting script...');
shout.rm('file.txt');
logan.info('done');

Issues

Have a bug or missing a new command introduced in ShellJS? Please create an issue here on GitHub!

Themes

If you've created a theme for ShellJS feel free to drop me a message @typicode.