From 0f75e27be9cd52f55ac27ef947fcfcdee0b9642b Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Thu, 19 Jul 2018 08:23:24 -0400 Subject: [PATCH] Use local babelOptions defined by package --- lib/graph/treeshake.js | 61 ++++++++++++++++++++------------ test/dev_bundle_forward/dev.html | 3 +- test/dev_bundles_minify/dev.html | 5 +-- 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/lib/graph/treeshake.js b/lib/graph/treeshake.js index 132f4128..25ac767d 100644 --- a/lib/graph/treeshake.js +++ b/lib/graph/treeshake.js @@ -132,32 +132,47 @@ function loadFromGraph(getNode) { function transpile(getNode, data) { let loader = data.loader; - let opts = loader.babelOptions || {}; - let required = ["es2015", {loose: false, modules: false}]; - opts.presets = processBabelPresets({ - baseURL: loader.baseURL, - babelOptions: opts, - loaderEnv: loader.getEnv() - }); + function getBabelOptions(node) { + let opts = loader.babelOptions || {}; + var npmPkg = node.load.metadata.npmPackage; + if(npmPkg) { + var pkgSteal = npmPkg.steal || npmPkg.system; + if(pkgSteal && pkgSteal.babelOptions) { + opts = pkgSteal.babelOptions; + } + } + return opts; + } - opts.plugins = processBabelPlugins({ - baseURL: loader.baseURL, - babelOptions: opts, - loaderEnv: loader.getEnv() - }); + function setBabelOptions(opts) { + let required = ["es2015", {loose: false, modules: false}]; - if(opts.presets && opts.presets.length) { - opts.presets = [required].concat(opts.presets); - } else { - opts.presets = [ - "react", - "stage-0", - required - ]; - } + opts.presets = processBabelPresets({ + baseURL: loader.baseURL, + babelOptions: opts, + loaderEnv: loader.getEnv() + }); - opts.sourceMaps = true; + opts.plugins = processBabelPlugins({ + baseURL: loader.baseURL, + babelOptions: opts, + loaderEnv: loader.getEnv() + }); + + if(opts.presets && opts.presets.length) { + opts.presets = [required].concat(opts.presets); + } else { + opts.presets = [ + "react", + "stage-0", + required + ]; + } + + opts.sourceMaps = true; + return opts; + } return { transform: function(code, id) { @@ -166,6 +181,8 @@ function transpile(getNode, data) { return code; } + let opts = setBabelOptions(getBabelOptions(node)); + let result = babel.transform(code, opts); for(let depName of node.load.metadata.dependencies) { diff --git a/test/dev_bundle_forward/dev.html b/test/dev_bundle_forward/dev.html index 79d4a792..dd51d71c 100644 --- a/test/dev_bundle_forward/dev.html +++ b/test/dev_bundle_forward/dev.html @@ -8,10 +8,11 @@ diff --git a/test/dev_bundles_minify/dev.html b/test/dev_bundles_minify/dev.html index 78908e2c..46909edb 100644 --- a/test/dev_bundles_minify/dev.html +++ b/test/dev_bundles_minify/dev.html @@ -7,10 +7,11 @@ Minified development bundles - - \ No newline at end of file +