diff --git a/lib/graph/transpile.js b/lib/graph/transpile.js index 29c4c869..e359ad6d 100644 --- a/lib/graph/transpile.js +++ b/lib/graph/transpile.js @@ -47,7 +47,9 @@ var transpileNode = function(node, outputFormat, options, graph, loader){ } transformActiveSource(node, key(options, outputFormat), function(node, source){ - var opts = Object.assign({}, options); + var opts = Object.assign({}, options, { + forceES5: loader.forceES5 !== false + }); var depMap = nodeDependencyMap(node); // this options is used by steal-tools transform diff --git a/package.json b/package.json index c9141c36..3cb0573b 100644 --- a/package.json +++ b/package.json @@ -31,14 +31,14 @@ "prettier": "1.12.0", "pump": "^3.0.0", "rollup-plugin-commonjs": "^9.1.3", - "steal": "^2.1.10", + "steal": "^2.2.0", "steal-bundler": "^0.3.6", "steal-parse-amd": "^1.0.0", "steal-rollup": "^0.58.4", "through2": "^3.0.0", "tmp": "0.0.33", "traceur": "0.0.111", - "transpile": "^2.6.1", + "transpile": "^2.7.0", "uglify-es": "3.1.3", "urix": "^0.1.0", "winston": "^2.2.0", diff --git a/test/keep_es2015/config.js b/test/keep_es2015/config.js new file mode 100644 index 00000000..17ad63b4 --- /dev/null +++ b/test/keep_es2015/config.js @@ -0,0 +1,4 @@ +steal.config({ + forceES5: false, + treeShaking: false +}); diff --git a/test/keep_es2015/main.js b/test/keep_es2015/main.js new file mode 100644 index 00000000..c7628494 --- /dev/null +++ b/test/keep_es2015/main.js @@ -0,0 +1,3 @@ +async function callMe() {} + +export default callMe; \ No newline at end of file diff --git a/test/multibuild_test.js b/test/multibuild_test.js index b12b7bf0..d1bc8797 100644 --- a/test/multibuild_test.js +++ b/test/multibuild_test.js @@ -2304,4 +2304,30 @@ describe("multi build", function(){ done(); }, done).catch(done); }); + + it("skips ES2015 transpilation if data.loader.forceES5 is false", function() { + var config = { + config: path.join(__dirname, "keep_es2015", "config.js"), + main: "main" + }; + + var options = { + minify: false, + quiet: true + }; + + return asap(rmdir)(path.join(__dirname, "keep_es2015", "dist")) + .then(function() { + return multiBuild(config, options); + }) + .then(function() { + var main = path.join(__dirname, "keep_es2015", "dist", "bundles", "main.js"); + var actualJS = fs.readFileSync(main, "utf8"); + + assert( + actualJS.includes("async function callMe()"), + "source should include async function untranspiled" + ); + }); + }); });