index.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. var through = require("through");
  2. var clone = require("lodash/lang/clone");
  3. var path = require("path");
  4. var to5 = require("6to5-core");
  5. var browserify = module.exports = function (filename, opts) {
  6. return browserify.configure(opts)(filename);
  7. };
  8. browserify.configure = function (opts) {
  9. opts = opts || {};
  10. if (opts.sourceMap !== false) opts.sourceMap = "inline" ;
  11. if (opts.extensions) opts.extensions = to5._util.arrayify(opts.extensions);
  12. if (opts.ignore) opts.ignore = to5._util.regexify(opts.ignore);
  13. if (opts.only) opts.only = to5._util.regexify(opts.only);
  14. return function (filename) {
  15. if ((opts.ignore && opts.ignore.test(filename)) ||
  16. (opts.only && !opts.only.test(filename)) ||
  17. !to5.canCompile(filename, opts.extensions)) {
  18. return through();
  19. }
  20. if (opts.sourceMapRelative) {
  21. filename = path.relative(opts.sourceMapRelative, filename);
  22. }
  23. var data = "";
  24. var write = function (buf) {
  25. data += buf;
  26. };
  27. var end = function () {
  28. var opts2 = clone(opts);
  29. delete opts2.sourceMapRelative;
  30. delete opts2.ignore;
  31. delete opts2.only;
  32. delete opts2.extensions;
  33. opts2.filename = filename;
  34. try {
  35. var out = to5.transform(data, opts2).code;
  36. } catch(err) {
  37. stream.emit("error", err);
  38. stream.queue(null);
  39. return;
  40. }
  41. stream.queue(out);
  42. stream.queue(null);
  43. };
  44. var stream = through(write, end);
  45. return stream;
  46. };
  47. };