Files
2023-07-12 16:31:19 +01:00

58 lines
1.5 KiB
JavaScript
Executable File

var through = require("through");
var clone = require("lodash/lang/clone");
var path = require("path");
var to5 = require("6to5-core");
var browserify = module.exports = function (filename, opts) {
return browserify.configure(opts)(filename);
};
browserify.configure = function (opts) {
opts = opts || {};
if (opts.sourceMap !== false) opts.sourceMap = "inline" ;
if (opts.extensions) opts.extensions = to5._util.arrayify(opts.extensions);
if (opts.ignore) opts.ignore = to5._util.regexify(opts.ignore);
if (opts.only) opts.only = to5._util.regexify(opts.only);
return function (filename) {
if ((opts.ignore && opts.ignore.test(filename)) ||
(opts.only && !opts.only.test(filename)) ||
!to5.canCompile(filename, opts.extensions)) {
return through();
}
if (opts.sourceMapRelative) {
filename = path.relative(opts.sourceMapRelative, filename);
}
var data = "";
var write = function (buf) {
data += buf;
};
var end = function () {
var opts2 = clone(opts);
delete opts2.sourceMapRelative;
delete opts2.ignore;
delete opts2.only;
delete opts2.extensions;
opts2.filename = filename;
try {
var out = to5.transform(data, opts2).code;
} catch(err) {
stream.emit("error", err);
stream.queue(null);
return;
}
stream.queue(out);
stream.queue(null);
};
var stream = through(write, end);
return stream;
};
};