Concatenate coffee script files using require()
JavaScript CoffeeScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
test
.gitignore
README.md
index.js
package.json

README.md

Scrunch

Assembles coffee-script files.

It's like browserify, but only for coffee-script and doesn't package npm dependencies (like fs and http).

Command Line Usage

$ sudo npm install -g coffee-scrunch
$ scrunch--help

  Usage: scrunch.js [options]

  Options:

    -h, --help        output usage information
    -V, --version     output the version number
    -v, --verbose     Detailed logs
    -i, --in [file]   Input file
    -o, --out [file]  Write to file

API Usage

var scrunch = require('coffee-scrunch');

var options = {
    input: 'init.coffee',
    output: 'app.js', // optional
    log: false // optional
};

scrunch(options).then(function () {
    console.log('finished');
});

Example

# a.coffee
b = require './b'
console.log('[a] running b...')
b()
# b.coffee
c = require './c'
module.exports = ->
    console.log('[b] running c...')
    c()
# c.coffee
module.exports = ->
    console.log('[c] ...being run')
$ scrunch -i a.coffee -o app.js
(function() {
  var _require;

  _require = function(index) {
    var exports, module;
    module = _require.cache[index];
    if (!module) {
      exports = {};
      module = _require.cache[index] = {
        id: index,
        exports: exports
      };
      _require.modules[index].call(exports, module, exports);
    }
    return module.exports;
  };

  _require.cache = [];

  _require.modules = [
    function(module, exports) {
      var b;
      b = _require(1);
      console.log('[a] running b...');
      return b();
    }, function(module, exports) {
      var c;
      c = _require(2);
      return module.exports = function() {
        console.log('[b] running c...');
        return c();
      };
    }, function(module, exports) {
      return module.exports = function() {
        return console.log('[c] ...being run');
      };
    }
  ];

  _require(0);

}).call(this);
$ coffee app.coffee
[a] running b...
[b] running c...
[c] ...being run

Changelog

0.2.4

  • Use a simpler regex for getting the require()d path

0.2.3

  • Use Substacks node-resolve to resolve dependencies.

0.2.2

  • Add support for options.log. If set, it will log what it is doing. Useful for debugging.
  • Switch from kew to bluebird for promises.

0.2.1

  • Fix bug with files being loaded when they don't exist
  • Log errors in bin/scrunch.js

0.2.0

  • Breaking: Rewrite api to be way easier to use
  • Use async IO and promises
  • Clean up code and add more comments
  • Write tests for most things
  • Replace require() calls to keep code size down
  • Use the same require() function as pure-cjs