From 0c5fae2faa251e3c2459071cacc41408ef56150d Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Wed, 13 Sep 2017 05:59:00 +0200 Subject: [PATCH] Make sure source type is module when parsing .mjs (#5700) * feat: force source type module for mjs extension * style: fix lint --- packages/babel-core/src/config/option-manager.js | 4 ++++ packages/babel-core/test/option-manager.js | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/packages/babel-core/src/config/option-manager.js b/packages/babel-core/src/config/option-manager.js index 1d1f1a79b4..b42199830b 100644 --- a/packages/babel-core/src/config/option-manager.js +++ b/packages/babel-core/src/config/option-manager.js @@ -195,6 +195,10 @@ class OptionManager { const basenameRelative = path.basename(opts.filenameRelative); + if (path.extname(opts.filenameRelative) === ".mjs") { + opts.sourceType = "module"; + } + defaults(opts, { sourceFileName: basenameRelative, sourceMapTarget: basenameRelative, diff --git a/packages/babel-core/test/option-manager.js b/packages/babel-core/test/option-manager.js index 3868d456fa..5358b2f2f2 100644 --- a/packages/babel-core/test/option-manager.js +++ b/packages/babel-core/test/option-manager.js @@ -44,6 +44,17 @@ describe("option-manager", () => { }); }); + describe("source type", function() { + it("should set module for .mjs extension", () => { + const config = manageOptions({ + sourceType: "program", + filename: "foo.mjs", + }); + + assert.equal(config.options.sourceType, "module"); + }); + }); + describe("presets", function() { function presetTest(name) { it(name, function() {