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/lib/stream/treeshake.js b/lib/stream/treeshake.js index 50c5bab8..c5a44a25 100644 --- a/lib/stream/treeshake.js +++ b/lib/stream/treeshake.js @@ -6,7 +6,13 @@ module.exports = function() { return through.obj(function(data, enc, next) { var options = data.options; - if(options.treeShaking === false) { + var disabled = + // Can be disabled from the BuildOptions + options.treeShaking === false || + // Or from package.json config + data.loader.treeShaking === false; + + if(disabled) { next(null, data); return; } diff --git a/package.json b/package.json index 75126b5e..e4fccde2 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "prettier": "1.12.0", "pump": "^3.0.0", "rollup-plugin-commonjs": "^9.1.3", - "steal": "^2.0.0-pre.7", + "steal": "^2.0.0-pre.16", "steal-bundler": "^0.3.6", "steal-parse-amd": "^1.0.0", "steal-rollup": "^0.58.3", 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 @@