Chapter 4. Compiling CoffeeScript
An issue with CoffeeScript is that it puts another layer between you and JavaScript, and having to manually compile CoffeeScript files whenever they change quickly gets old. Fortunately, CoffeeScript has some alternative forms of compilation that can make the development cycle somewhat smoother.
As we covered in Initial Setup, we can compile CoffeeScript files using the coffee executable:
coffee --compile --output lib src
However, calling that whenever a source file changes is a bit of a bore, so let’s look into automating it.
Cake
Cake is a
super simple build system along the lines of Make and Rake. The library is bundled with
the coffee-script npm package, and
available via an executable called cake.
You can define tasks using CoffeeScript in a file called Cakefile. Cake will pick these up, and can be
invoked by running cake [task]
[options] from within the directory. To print a list of all the
tasks and options, just type cake.
Tasks are defined using the task() function, passing a name, optional
description, and callback function. For example, create a file called
Cakefile, and two directories, lib and src.
Add the following to the Cakefile:
fs = require 'fs' {print} = require 'util' {spawn} = require 'child_process' build = (callback) -> coffee = spawn 'coffee', ['-c', '-o', 'lib', 'src'] coffee.stderr.on 'data', (data) -> process.stderr.write data.toString() coffee.stdout.on 'data', (data) -> print data.toString() coffee.on 'exit', (code) -> callback?() ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access