StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.6 KiB
97 lines
2.6 KiB
var fs = require('fs');
|
|
var path = require('path');
|
|
|
|
var browserify = require('browserify');
|
|
var minify = require('minify-stream');
|
|
var derequire = require('derequire');
|
|
var through = require('through2');
|
|
|
|
var constants = require('./constants');
|
|
var strictD3 = require('./strict_d3');
|
|
|
|
/** Convenience browserify wrapper
|
|
*
|
|
* @param {string} pathToIndex path to index file to bundle
|
|
* @param {string} pathToBunlde path to destination bundle
|
|
* @param {object} opts
|
|
* Browserify options:
|
|
* - standalone {string}
|
|
* - debug {boolean} [optional]
|
|
* Additional option:
|
|
* - pathToMinBundle {string} path to destination minified bundle
|
|
* - noCompress {boolean} skip attribute meta compression?
|
|
* @param {function} cb callback
|
|
*
|
|
* Outputs one bundle (un-minified) file if opts.pathToMinBundle is omitted
|
|
* or opts.debug is true. Otherwise outputs two file: one un-minified bundle and
|
|
* one minified bundle.
|
|
*
|
|
* Logs basename of bundle when completed.
|
|
*/
|
|
module.exports = function _bundle(pathToIndex, pathToBundle, opts, cb) {
|
|
opts = opts || {};
|
|
|
|
var pathToMinBundle = opts.pathToMinBundle;
|
|
|
|
var browserifyOpts = {};
|
|
browserifyOpts.standalone = opts.standalone;
|
|
browserifyOpts.debug = opts.debug;
|
|
|
|
if(opts.noCompress) {
|
|
browserifyOpts.ignoreTransform = './tasks/compress_attributes.js';
|
|
}
|
|
|
|
browserifyOpts.transform = [];
|
|
if(opts.debug) {
|
|
browserifyOpts.transform.push(strictD3);
|
|
}
|
|
|
|
var b = browserify(pathToIndex, browserifyOpts);
|
|
var pending = pathToMinBundle ? 2 : 1;
|
|
|
|
function done() {
|
|
if(cb && --pending === 0) cb(null);
|
|
}
|
|
|
|
var bundleStream = b.bundle(function(err) {
|
|
if(err) {
|
|
if(cb) cb(err);
|
|
else throw err;
|
|
}
|
|
});
|
|
|
|
if(pathToMinBundle) {
|
|
bundleStream
|
|
.pipe(applyDerequire())
|
|
.pipe(minify(constants.uglifyOptions))
|
|
.pipe(fs.createWriteStream(pathToMinBundle))
|
|
.on('finish', function() {
|
|
logger(pathToMinBundle);
|
|
done();
|
|
});
|
|
}
|
|
|
|
bundleStream
|
|
.pipe(applyDerequire())
|
|
.pipe(fs.createWriteStream(pathToBundle))
|
|
.on('finish', function() {
|
|
logger(pathToBundle);
|
|
done();
|
|
});
|
|
};
|
|
|
|
function logger(pathToOutput) {
|
|
var log = 'ok ' + path.basename(pathToOutput);
|
|
console.log(log);
|
|
}
|
|
|
|
function applyDerequire() {
|
|
var buf = '';
|
|
return through(function(chunk, enc, next) {
|
|
buf += chunk.toString();
|
|
next();
|
|
}, function(done) {
|
|
this.push(derequire(buf));
|
|
done();
|
|
});
|
|
}
|
|
|