TL;DR I wrote a Grunt task to live compile CoffeeScript for local development.
Full story
Somewhat inspired by my colleague Phil’s tweet, I’ve written a Grunt plugin to make it easy to start writing any JavaScript project in CoffeeScript.
It’s a simple static web server with a twist – request a .js file and it will be returned if it exists. If it doesn’t exist then the server will try and find a .coffee version of the file and return the compiled output if it can.
N.B. It does not deal with compilation for deployment, there’s already a plugin for that.
Usage
This is packaged up as a Grunt task so you’ll need to install Grunt from NPM first (might as well do that globally):
npm install -g grunt
Then install the task:
npm install grunt-coffee-server
Next you’ll need a gruntfile:
grunt init:gruntfile
Follow the instructions and take a look in your new grunt.js
file. We need to register the new task by adding the following line:
grunt.loadNpmTasks('grunt-coffee-server');
There are also a couple of configuration options available which are read from the server
config key:
grunt.initConfig({ server: { port: 1337 // defaults to 3000 if not set base: './public' // defaults to ./ if not set } });
Finally run the server:
grunt coffee-server
I’ve written this kind of server manually a few times now for local development so I know it’ll be handy for me – hopefully it’ll be useful for you too.
It’s on GitHub so feel free to fork, pull request etc!