less-middleware

LESS.js middleware for connect.

npm install less-middleware
874 downloads in the last day
5 471 downloads in the last week
27 579 downloads in the last month

This middleware was created to allow processing of Less files for Connect JS framework and by extension the Express JS framework.

Build Status

Usage

lessMiddleware(source, [{options}], [{parserOptions}], [{compilerOptions}])

Express

var lessMiddleware = require('less-middleware');

var app = express();
app.use(lessMiddleware(__dirname + '/public'));
app.use(express.static(__dirname + '/public'));

options

The following options can be used to control the behavior of the middleware:

Option Description Default
debug Show more verbose logging? false
dest Destination directory to output the compiled .css files. Same directory as less source files.
force Always re-compile less files on each request. false
once Only recompile once after each server restart. Useful for reducing disk i/o on production. false
pathRoot Common root of the source and destination. It is prepended to both the source and destination before being used. null
postprocess Object containing functions relavent to preprocessing data.
postprocess.css Function that modifies the compiled css output before being stored. function(css, req){...}
preprocess Object containing functions relavent to preprocessing data.
preprocess.less Function that modifies the raw less output before being parsed and compiled. function(src, req){...}
preprocess.path Function that modifies the less pathname before being loaded from the filesystem. function(pathname, req){...}
storeCss Function that is in charge of storing the css in the filesystem. function(pathname, css, next){...}

parserOptions

The parserOptions are passed directly into the less parser with minimal defaults or changes by the middleware.

The following are the defaults used by the middleware:

Option Default
dumpLineNumbers 0
paths [source]
optimization 0
relativeUrls false

compilerOptions

The compilerOptions are passed directly into the less parser with minimal defaults or changes by the middleware.

The following are the defaults used by the middleware:

Option Default
compress auto
sourceMap false
yuicompress false

Examples

Common examples of using the Less middleware are available in the wiki.

Troubleshooting

My less never recompiles, even when I use {force: true}!

Make sure you're declaring less-middleware before your static middleware, if you're using the same directory, e.g. (with express):

var lessMiddleware = require('less-middleware');

var app = express();
app.use(lessMiddleware(__dirname + '/public'));
app.use(express.static(__dirname + '/public'));

not

var lessMiddleware = require('less-middleware');

var app = express();
app.use(express.static(__dirname + '/public'));
app.use(lessMiddleware(__dirname + '/public'));

IIS

If you are hosting your app on IIS you will have to modify your web.config file in order to allow NodeJS to serve your CSS static files. IIS will cache your CSS files, bypassing NodeJS static file serving, which in turn does not allow the middleware to recompile your LESS files.

npm loves you