From 38b64e54caaed84ce72b92d1e55acf2f1d4cbc69 Mon Sep 17 00:00:00 2001 From: mbehzad Date: Thu, 18 Feb 2021 23:45:51 +0100 Subject: [PATCH] fix: add file extention when the absolute path to the runtime files are used (#12824) the es module imports need the file extention (e.g. import "@babel/runtime/helpers/jsx.js", Or the filenames being listed in the package.json's subpath exports (e.g. "import "@babel/runtime/helpers/jsx" + pkg: "./helpers/jsx": "./helpers/jsx.js"). when the user passes a path via `absoluteRuntime` then the rendered require staemnts is not the module name + subpath which will be resolved via pkg.json but rather the absolute path to the file. for this case, add the file extention / index.js to prevent bundlers from raising a warning. --- packages/babel-plugin-transform-runtime/src/index.js | 2 +- .../test/fixtures/absoluteRuntime/relative/output.js | 2 +- .../absoluteRuntime/true-corejs3-proposals/output.js | 2 +- .../fixtures/absoluteRuntime/true-corejs3-stable/output.js | 2 +- .../fixtures/absoluteRuntime/true-use-es-modules/input.js | 1 + .../absoluteRuntime/true-use-es-modules/options.json | 6 ++++++ .../fixtures/absoluteRuntime/true-use-es-modules/output.js | 7 +++++++ .../test/fixtures/absoluteRuntime/true/output.js | 2 +- .../test/fixtures/windows/absoluteRuntime/output.js | 2 +- 9 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/output.js diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 1893b9d410cf..97bd4b1f7415 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -233,7 +233,7 @@ export default declare((api, options, dirname) => { : "helpers"; return addDefaultImport( - `${modulePath}/${helpersDir}/${name}`, + `${modulePath}/${helpersDir}/${name}${absoluteRuntime ? ".js" : ""}`, name, blockHoist, true, diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/relative/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/relative/output.js index 4e7a5218225f..8b22aebeabe2 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/relative/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/relative/output.js @@ -1,4 +1,4 @@ -var _classCallCheck = require("/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/relative/subfolder/node_modules/@babel/runtime/helpers/classCallCheck"); +var _classCallCheck = require("/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/relative/subfolder/node_modules/@babel/runtime/helpers/classCallCheck.js"); let Foo = function Foo() { "use strict"; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/output.js index 103801cebf2f..fe7fecd2caa6 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/output.js @@ -1,4 +1,4 @@ -var _regeneratorRuntime = require("/packages/babel-runtime-corejs3/regenerator"); +var _regeneratorRuntime = require("/packages/babel-runtime-corejs3/regenerator/index.js"); var _mapInstanceProperty = require("/packages/babel-runtime-corejs3/core-js/instance/map.js"); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/output.js index f12caf00ff1d..7dc7f9eecffa 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/output.js @@ -1,4 +1,4 @@ -var _regeneratorRuntime = require("/packages/babel-runtime-corejs3/regenerator"); +var _regeneratorRuntime = require("/packages/babel-runtime-corejs3/regenerator/index.js"); var _mapInstanceProperty = require("/packages/babel-runtime-corejs3/core-js-stable/instance/map.js"); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/input.js new file mode 100644 index 000000000000..4e6a6de65314 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/input.js @@ -0,0 +1 @@ +class Foo {} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/options.json new file mode 100644 index 000000000000..891cd526879d --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-classes", + ["transform-runtime", { "absoluteRuntime": true, "useESModules": true }] + ] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/output.js new file mode 100644 index 000000000000..171f958ee914 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-use-es-modules/output.js @@ -0,0 +1,7 @@ +var _classCallCheck = require("/packages/babel-runtime/helpers/classCallCheck.js"); + +let Foo = function Foo() { + "use strict"; + + _classCallCheck(this, Foo); +}; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true/output.js index e1b6927ae714..171f958ee914 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true/output.js @@ -1,4 +1,4 @@ -var _classCallCheck = require("/packages/babel-runtime/helpers/classCallCheck"); +var _classCallCheck = require("/packages/babel-runtime/helpers/classCallCheck.js"); let Foo = function Foo() { "use strict"; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/windows/absoluteRuntime/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/windows/absoluteRuntime/output.js index dded9de0698a..452420d4b63b 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/windows/absoluteRuntime/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/windows/absoluteRuntime/output.js @@ -1,4 +1,4 @@ -var _asyncToGenerator = require("/packages/babel-runtime/helpers/asyncToGenerator"); +var _asyncToGenerator = require("/packages/babel-runtime/helpers/asyncToGenerator.js"); function test() { return _test.apply(this, arguments);