74 lines
2.6 KiB
JavaScript
74 lines
2.6 KiB
JavaScript
|
#!/usr/bin/env node
|
||
|
|
||
|
var fs = require('fs');
|
||
|
var path = require('path');
|
||
|
var querystring = require('querystring');
|
||
|
var child_process = require('child_process');
|
||
|
|
||
|
var browserify = path.join('node_modules', '.bin', 'browserify');
|
||
|
var coffee = path.join('node_modules', '.bin', 'coffee');
|
||
|
|
||
|
function run(command, callback) {
|
||
|
console.log(command);
|
||
|
child_process.exec(command, callback);
|
||
|
}
|
||
|
|
||
|
// Use browserify to package up source-map-support.js
|
||
|
fs.writeFileSync('.temp.js', 'sourceMapSupport = require("./source-map-support");');
|
||
|
run(browserify + ' .temp.js', function(error, stdout) {
|
||
|
if (error) throw error;
|
||
|
|
||
|
// Wrap the code so it works both as a normal <script> module and as an AMD module
|
||
|
var header = [
|
||
|
'/*',
|
||
|
' * Support for source maps in V8 stack traces',
|
||
|
' * https://github.com/evanw/node-source-map-support',
|
||
|
' */',
|
||
|
].join('\n');
|
||
|
var code = [
|
||
|
'(this["define"] || function(name, callback) { this["sourceMapSupport"] = callback(); })("browser-source-map-support", function(sourceMapSupport) {',
|
||
|
stdout.replace(/\bbyte\b/g, 'bite').replace(new RegExp(__dirname + '/', 'g'), '').replace(/@license/g, 'license'),
|
||
|
'return sourceMapSupport});',
|
||
|
].join('\n');
|
||
|
|
||
|
// Use the online Google Closure Compiler service for minification
|
||
|
fs.writeFileSync('.temp.js', querystring.stringify({
|
||
|
compilation_level: 'SIMPLE_OPTIMIZATIONS',
|
||
|
output_info: 'compiled_code',
|
||
|
output_format: 'text',
|
||
|
js_code: code
|
||
|
}));
|
||
|
run('curl -d @.temp.js "http://closure-compiler.appspot.com/compile"', function(error, stdout) {
|
||
|
if (error) throw error;
|
||
|
var code = header + '\n' + stdout;
|
||
|
fs.unlinkSync('.temp.js');
|
||
|
fs.writeFileSync('browser-source-map-support.js', code);
|
||
|
fs.writeFileSync('amd-test/browser-source-map-support.js', code);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// Build the AMD test
|
||
|
run(coffee + ' --map --compile amd-test/script.coffee', function(error) {
|
||
|
if (error) throw error;
|
||
|
});
|
||
|
|
||
|
// Build the browserify test
|
||
|
run(coffee + ' --map --compile browserify-test/script.coffee', function(error) {
|
||
|
if (error) throw error;
|
||
|
run(browserify + ' --debug browserify-test/script.js > browserify-test/compiled.js', function(error) {
|
||
|
if (error) throw error;
|
||
|
})
|
||
|
});
|
||
|
|
||
|
// Build the browser test
|
||
|
run(coffee + ' --map --compile browser-test/script.coffee', function(error) {
|
||
|
if (error) throw error;
|
||
|
});
|
||
|
|
||
|
// Build the header test
|
||
|
run(coffee + ' --map --compile header-test/script.coffee', function(error) {
|
||
|
if (error) throw error;
|
||
|
var contents = fs.readFileSync('header-test/script.js', 'utf8');
|
||
|
fs.writeFileSync('header-test/script.js', contents.replace(/\/\/# sourceMappingURL=.*/g, ''))
|
||
|
});
|