herringbone is a Haskell library for compiling and serving web assets.
It aims to make it dead simple to create a Middleware or
Application which deals with all of your static assets, including
preprocessing for languages like Fay, CoffeeScript, Sass, and LESS.

It takes most of its inspiration from the Ruby library,
Sprockets, hence the name.

Preprocessors

A preprocessor something which is run on the asset before it is served.
Preprocessors are run when a file extension matches the preprocessor
extension. For example, if you have a preprocessor for "coffee" files, you
request "application.js", and there is a file named
"application.js.coffee", Herringbone will run the coffee preprocessor on
that file and serve you the result.

You can add more preprocessors by adding more file extensions;
"application.js.coffee.erb" will be preprocessed first by "erb", then by
"coffee" (assuming you have registered preprocessors for those files).