Super simple yet comprehensive static files server. Shuss

shuss - super http u* static server

Super simple yet comprehensive static files server. Shuss :ski:

u*: pick one

  • uber
  • unicorn
  • universal
  • ubuesque
  • unix
  • uhuhuh

Shuss requires Node.js to run.

npm install shuss

You'd probably want it in available globally, with:

npm install -g shuss

To enjoy the pleasure of the livereload feature, just follow the official browser extension installation guide. Easy.

Shuss loads settings in that order:

  1. defaults
  2. env
  3. -f <file>
  4. cli args

There are very few settings, all defaulted.

  • port: 1234
  • dir: '.'
  • livreload: false
  • livereloadport: 35729
  • verbose: false
> shuss -h
shuss [options...]
  -d, --dir          Served files directory                 [default: "."]
  -p, --port         Runs Shuss on the specified port       [default: "1234"]
  --verbose          Speak to me
  -l, --livereload   Enables LiveReload
  --livereload_port  Runs LiveReload on the specified port  [default: "35729"]
  -f, --file         Config file path
  -v, --version      Return actual Shuss version
  -h, --help         Displays Shuss help

Default usage:

> shuss
info: serving /Users/arnaud/projects/shuss on

Specific port and livereload (on default port):

> shuss -p 6543 -l
info: serving /Users/arnaud/projects/shuss on

Now with verbose, specified, port and livereload port

> shuss -p 6543 --verbose -l --livereload_port 6523
info: serving /Users/romain/Projects/shuss on
debug: starting server on port 6543
debug: starting livereload server on port 6523

Shuss can load settings from these self-explanatory values:


You can specify a config file to load:

$ > shuss -f config.json

It is expected to contain json, like in this:

$ > cat config.json
  "livereload": true,
  "livereloadport": 9854,
  "verbose": true,
  "dir": "./public"

While being very simple, Shuss can handle complexe plugins.

To use a plugin, you will probably have to install them in the same scope as shuss. Chances are you must install them globaly:

npm i -G shuss-my-awesome-plugin

Then, you just have to specify the comma separated list of plugins you want to use, along with their own arguments. Here is an example with shuss-basic-auth

shuss --plugins basic-auth --username admin --password foobar

A plugin is a npm package prefixed by shuss-. Plugins can act on:

You are allowed to add your own cli args.

All they have to define is a load(app, express, config) function. See the basic-auth example.

All Shuss Node.js module are written in CoffeeScript.

In order to use correctly the shuss binary, you have to compile them in JavaScript.

It can be done through:

$ grunt coffee:compile

Or more easily:

$ grunt
  • test config solver, urgent, not how to do it yet, maybe node-env-file
  • any idea?

So much to do!

  • grunt-shuss
  • gulp-shuss
  • atom-shuss
  • sublime-shuss
  • younameit-shuss

Contributors and CONTRIBUTING

Released under the MIT License. See the LICENSE file for further details.