diff --git a/packages/babel-core/src/tools/build-external-helpers.js b/packages/babel-core/src/tools/build-external-helpers.js index 9bc0221977..fd1e91940b 100644 --- a/packages/babel-core/src/tools/build-external-helpers.js +++ b/packages/babel-core/src/tools/build-external-helpers.js @@ -73,8 +73,26 @@ function buildVar(namespace, builder) { } function buildHelpers(body, namespace, whitelist) { + function shouldIgnore(name) { + if (!whitelist) { + return false; + } + + // check for the raw name + if (whitelist.indexOf(name) >= 0) { + return false; + } + + // typeof -> _typeof + if (name[0] === "_" && whitelist.indexOf(name.slice(1)) >= 0) { + return false; + } + + return true; + } + each(helpers.list, function (name) { - if (whitelist && whitelist.indexOf(name) === -1) return; + if (shouldIgnore(name)) return; let key = t.identifier(t.toIdentifier(name)); body.push(t.expressionStatement( diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index e279d5f613..c9efbb2e59 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -387,5 +387,10 @@ suite("api", function () { assert.ok(script.indexOf("classCallCheck") === -1); assert.ok(script.indexOf("inherits") === -1); }); + + test("underscored", function () { + var script = buildExternalHelpers(["typeof"]); + assert.ok(script.indexOf("typeof") >= 0); + }); }); });