UNPKG

1.56 kBJavaScriptView Raw
1var babel = require("babel-standalone");
2var assign = require("lodash/assign");
3
4function getBabelPlugins(userDefinedPlugins, options) {
5 var plugins = userDefinedPlugins || [];
6 var transformModulesPlugin = "transform-es2015-modules-amd";
7
8 // we must include the transform modules plugin when the ES2015 preset
9 // is not used due to options.forceES5 being false
10 if (options.forceES5 === false && !plugins.includes(transformModulesPlugin)) {
11 plugins.push(transformModulesPlugin);
12 }
13
14 return plugins;
15}
16
17function getBabelPresets(userDefinedPresets, modules, options) {
18 var presets;
19 var es2015Preset = ["es2015", {loose: false, modules: modules}];
20
21 // presets are applied from last to first
22 if(userDefinedPresets && userDefinedPresets.length) {
23 presets = options.forceES5 !== false
24 ? [es2015Preset].concat(userDefinedPresets)
25 : userDefinedPresets
26 } else {
27 presets = options.forceES5 !== false
28 ? ["react", "stage-0", es2015Preset]
29 : ["react"]
30 }
31
32 return presets;
33}
34
35module.exports = function(source, compileOptions, options){
36 var opts = assign({}, options.babelOptions, {
37 sourceMap: compileOptions.sourceMaps || false
38 });
39
40 opts.presets = getBabelPresets(opts.presets, compileOptions.modules, options);
41 opts.plugins = getBabelPlugins(opts.plugins, options);
42
43 // Remove Babel 5 options
44 delete opts.optional;
45 delete opts.whitelist;
46 delete opts.blacklist;
47
48 if(opts.sourceMap) {
49 opts.sourceMapTarget = options.sourceMapFileName;
50 opts.sourceFileName = options.sourceMapFileName;
51 }
52
53 return babel.transform(source, opts);
54};