From 5a01beaa1fcf38c9a3666679b289fae52f013ee0 Mon Sep 17 00:00:00 2001 From: Hugh Kennedy Date: Fri, 2 Jan 2015 21:21:51 +0100 Subject: [PATCH] Make require("6to5/register") work with browserify Previously, you'd have to create a separate file for using 6to5 with both node and browserify, as the latter wasn't able to properly handle loading 6to5's dependency tree and would crash on attempting to do so. This change instructs browserify to use "register-browser.js" in place of "register.js". "register-browser.js" still loads the 6to5 polyfill, but is otherwise ignored. --- lib/6to5/register-browser.js | 3 +++ package.json | 3 +++ test/browserify.js | 19 +++++++++++++++++++ test/fixtures/browserify/register.js | 3 +++ 4 files changed, 28 insertions(+) create mode 100644 lib/6to5/register-browser.js create mode 100644 test/browserify.js create mode 100644 test/fixtures/browserify/register.js diff --git a/lib/6to5/register-browser.js b/lib/6to5/register-browser.js new file mode 100644 index 0000000000..4acd3d5895 --- /dev/null +++ b/lib/6to5/register-browser.js @@ -0,0 +1,3 @@ +// Required to safely use 6to5/register within a browserify codebase. +module.exports = function(){}; +require("./polyfill"); diff --git a/package.json b/package.json index d2fd5813c6..f0ab984c66 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,9 @@ "6to5-node": "./bin/6to5-node", "6to5-runtime": "./bin/6to5-runtime" }, + "browser": { + "./lib/6to5/register.js": "./lib/6to5/register-browser.js" + }, "keywords": [ "harmony", "classes", diff --git a/test/browserify.js b/test/browserify.js new file mode 100644 index 0000000000..40298147cd --- /dev/null +++ b/test/browserify.js @@ -0,0 +1,19 @@ +var browserify = require("browserify"); +var assert = require("assert"); +var path = require("path"); +var vm = require("vm"); + +suite("browserify", function() { + test("6to5/register may be used without breaking browserify", function(done) { + var bundler = browserify(path.join(__dirname, "fixtures/browserify/register.js")); + + bundler.bundle(function(err, bundle) { + if (err) return done(err); + assert.ok(bundle.length, "bundle output code"); + + // ensure that the code runs without throwing an exception + vm.runInNewContext(bundle, {}); + done(); + }) + }) +}); diff --git a/test/fixtures/browserify/register.js b/test/fixtures/browserify/register.js new file mode 100644 index 0000000000..2565c2183c --- /dev/null +++ b/test/fixtures/browserify/register.js @@ -0,0 +1,3 @@ +require('../../../register')({ + ignoreRegex: false +});