requisite
Version:
A cosmic javascript bundler.
71 lines (61 loc) • 2.22 kB
JavaScript
var fs;
use('sake-outdated');
use('sake-publish');
use('sake-version');
fs = require('fs');
task('build', 'compile src/*.coffee to lib/*.js', function () {
return exec('node_modules/.bin/coffee -bcm -o lib/ src/');
});
task('watch', 'watch for changes and recompile project', function () {
return exec('node_modules/.bin/coffee -bcmw -o lib/ src/');
});
task('test', 'run tests', function (options, done) {
var grep, ref, test;
if (!fs.existsSync('node_modules/unqualified')) {
fs.symlinkSync('../fixtures/node_modules/unqualified', 'node_modules/unqualified');
}
test = (ref = options.test) != null ? ref : 'test';
if (options.grep != null) {
grep = "--grep " + options.grep;
} else {
grep = '';
}
return exec("NODE_ENV=test node_modules/.bin/mocha --colors --reporter spec --timeout 5000 --compilers coffee:coffee-script/register --require source-map-support/register " + grep + " " + test, done);
});
task('test:watch', 'watch for changes and recompile, re-run tests', function (options) {
return invoke('build', function () {
return invoke('test', function () {
var runningTests;
runningTests = false;
return require('vigil').watch(__dirname, function (filename, stats) {
var out;
if (runningTests) {
return;
}
if (/\.coffee$/.test(filename)) {
if (/^test/.test(filename)) {
out = '.test/';
options.test = ".test/" + path.basename(filename.split('.', 1)) + ".js";
} else if (/^src/.test(filename)) {
out = path.dirname(filename).replace(/^src/, 'lib');
options.test = '.test';
} else {
console.log('wut');
return;
}
runningTests = true;
return exec("node_modules/.bin/coffee -bcm -o " + out + " " + filename, function () {
console.log(new Date().toLocaleTimeString() + " - compiled " + filename);
return invoke('test', function () {
return runningTests = false;
});
});
}
});
});
});
});
task('gh-pages', 'Publish github page', function () {
return require('brief').update();
});
;