Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Efficiently require() CoffeeScript + Streamline files. DEPRECATED.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 .gitignore
Octocat-spinner-32 README.md
Octocat-spinner-32 coffee-streamline.js
Octocat-spinner-32 example._coffee
Octocat-spinner-32 example.js
Octocat-spinner-32 package.json
README.md

Coffee-Streamline

DEPRECATED. No longer needed. Streamline's --cache option properly caches CoffeeScript compilation too now.

Helper for efficiently require()'ing CoffeeScript and/or Streamline files. The key word is "efficiently": compiled code is cached to prevent recompilation on subsequent runs.

Note that Streamline does natively support caching compiled code, but it only caches the Streamline compilation; CoffeeScript is compiled every time there. This module caches both types of compilation.

This module is also robust to version changes (upgrades) to both CoffeeScript and Streamline; files will be properly recompiled in those cases.

Installation

npm install coffee-streamline

Note that CoffeeScript and Streamline should also be installed like normal, e.g. your package.json should specify the desired versions of those.

Usage

You can simply require() this module in place of both CoffeeScript and Streamline; all proper require() handlers will be registered:

require('coffee-streamline');

You can then require() CoffeeScript and/or Streamline files like normal, and they'll be compiled and cached automatically:

require('./foo');   // e.g. foo.coffee
require('./bar');   // e.g. bar._js
require('./baz');   // e.g. baz._coffee

You can also run a CoffeeScript and/or Streamline file as if it were the main file being executed:

require('coffee-streamline').run('./app');  // e.g. app._coffee
// within app._coffee, `module === require.main` will be true

Relative paths like ./app will be resolved relative to the parent module just like require().

Details

Cached files are stored in a .cache directory under the current working directory at runtime (process.cwd()). This is to support deploying the compiled files alongside the source ones, e.g. via rsync.

Currently, Streamline compilation happens under "callback" mode.

TODO

Support configuration/options, e.g. cache directory location and Streamline compilation mode (callbacks or fibers).

Can/should some of this be integrated into Streamline directly?

Changelog

0.1.3 - Minor improvement to run() to better support node-dev.

0.1.2 - New feature: run() files as main!

0.1.1 - Ported to JS for simplicity.

0.1.0 - Initial release.

License

MIT. © 2012 Aseem Kishore.

Credits

Jeremy Ashkenas for the awesome CoffeeScript, and Bruno Jouhier for the awesome Streamline.

Something went wrong with that request. Please try again.