diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js index 521efe7f0c..857838aeef 100644 --- a/packages/babel-core/src/transformation/file/index.js +++ b/packages/babel-core/src/transformation/file/index.js @@ -271,7 +271,8 @@ export default class File extends Store { let generator = this.get("helperGenerator"); let runtime = this.get("helpersNamespace"); if (generator) { - return generator(name); + let res = generator(name); + if (res) return res; } else if (runtime) { let id = t.identifier(t.toIdentifier(name)); return t.memberExpression(runtime, id); diff --git a/packages/babel-core/test/fixtures/transformation/runtime/class/actual.js b/packages/babel-core/test/fixtures/transformation/runtime/class/actual.js new file mode 100644 index 0000000000..4e6a6de653 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/runtime/class/actual.js @@ -0,0 +1 @@ +class Foo {} diff --git a/packages/babel-core/test/fixtures/transformation/runtime/class/expected.js b/packages/babel-core/test/fixtures/transformation/runtime/class/expected.js new file mode 100644 index 0000000000..698463f783 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/runtime/class/expected.js @@ -0,0 +1,5 @@ +import _classCallCheck from "babel-runtime/helpers/classCallCheck"; + +let Foo = function Foo() { + _classCallCheck(this, Foo); +}; diff --git a/packages/babel-core/test/fixtures/transformation/runtime/class/options.json b/packages/babel-core/test/fixtures/transformation/runtime/class/options.json new file mode 100644 index 0000000000..d4959d4813 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/runtime/class/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-runtime", "transform-es2015-classes"] +} diff --git a/packages/babel-core/test/fixtures/transformation/runtime/modules/actual.js b/packages/babel-core/test/fixtures/transformation/runtime/modules/actual.js new file mode 100644 index 0000000000..5847dc2875 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/runtime/modules/actual.js @@ -0,0 +1,2 @@ +import foo from "bar"; +foo; diff --git a/packages/babel-core/test/fixtures/transformation/runtime/modules/expected.js b/packages/babel-core/test/fixtures/transformation/runtime/modules/expected.js new file mode 100644 index 0000000000..8aa8c49226 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/runtime/modules/expected.js @@ -0,0 +1,9 @@ +"use strict"; + +var _bar = require("bar"); + +var _bar2 = _interopRequireDefault(_bar); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +_bar2.default; diff --git a/packages/babel-core/test/fixtures/transformation/runtime/modules/options.json b/packages/babel-core/test/fixtures/transformation/runtime/modules/options.json new file mode 100644 index 0000000000..0e4d050af3 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/runtime/modules/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-runtime", "transform-es2015-modules-commonjs"] +} diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 235a1bb51d..32e466610d 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -7,14 +7,18 @@ export default function ({ types: t }) { return Object.prototype.hasOwnProperty.call(obj, key); } + let HELPER_BLACKLIST = ["interopRequireWildcard", "interopRequireDefault"]; + return { - pre(file, state) { - state.set("helperGenerator", function (name) { - return state.addImport(`${RUNTIME_MODULE_NAME}/helpers/${name}`, "default", name); + pre(file) { + file.set("helperGenerator", function (name) { + if (HELPER_BLACKLIST.indexOf(name) < 0) { + return file.addImport(`${RUNTIME_MODULE_NAME}/helpers/${name}`, "default", name); + } }); - state.setDynamic("regeneratorIdentifier", function () { - return state.addImport(`${RUNTIME_MODULE_NAME}/regenerator`, "default", "regeneratorRuntime"); + this.setDynamic("regeneratorIdentifier", function () { + return file.addImport(`${RUNTIME_MODULE_NAME}/regenerator`, "default", "regeneratorRuntime"); }); },