Piggy In The Middle
Express/Connect middleware for transpiling to html/css/js on-the-fly. Also gives you sourcemaps, caching for unchanged files and integrates well with live reload tools like browser-sync and live-reload.
Currently supports: LiveScript
, babel
, coco
, coffee-script
, dogescript
, less
, marked
, myth
, jade
, node-sass
, stylus
, swig
.
It works a bit like this:
- A request comes in for
app.js
app.js
can not be found (404
)- PITM will look for files that compile to
app.js
- It finds
app.coffee
app.coffee
is compiled on-the-fly- The compiled output is served to the browser as
app.js
Subsequent requests will not force a recompile file because PITM will cache the output. PITM is smart and will watch the source file(s) for changes, if you change a source file then it will do a recompile on next request.
Try it out
The easiest way to try this out is to clone
the repo, cd
into it and do:
npm installnpm run example
This will start a basic demo site using PITM.
Use as middleware
Here's a really simple example:
var connect = ;var serveStatic = ;var pitm = ; var app = ; app;app; app;
Once initialized PITM will also emit 'fileChanged' events whenever a watched file is changed, this is useful for doing live reloading of the browser. For example, to integrate PITM with browser-sync you can do something like this:
var pitm = ;var browserSync = ; var piggy = ;piggyevents;
node_modules
Custom Path To globalbabyTolkCompilerModulePath = '/some/folder/node_modules';;
By default PITM will look for compatible modules in the node_modules
dir inside of /path/to/your/site
.
You can set global.babyTolkCompilerModulePath
to look for compatible node modules in a different dir, like in the example above: /some/other/dir/node_modules
.