-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
babel-build.js
76 lines (62 loc) · 2.02 KB
/
babel-build.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
'use strict';
var babel = require('broccoli-babel-transpiler');
var path = require('path');
var moduleResolve = require('amd-name-resolver').moduleResolve;
function getDebugMacroPlugins() {
const DebugMacros = require('babel-plugin-debug-macros').default;
const isProduction = process.env.EMBER_ENV === 'production';
let options = {
envFlags: {
source: '@glimmer/env',
flags: { DEBUG: !isProduction, CI: !!process.env.CI }
},
externalizeHelpers: {
global: 'Ember'
},
debugTools: {
source: '@ember/debug'
}
};
return [DebugMacros, options];
}
function babelOptions(libraryName, _options) {
_options = _options || {};
var options = {
plugins: [],
postTransformPlugins: [],
sourceMaps: false,
moduleRoot: libraryName,
moduleIds: true,
// Transforms /index.js files to use their containing directory name
getModuleId: function (name) {
return name.replace(/\/index$/g, '');
},
resolveModuleSource: function(source, fileName) {
return moduleResolve.call(this, source, libraryName + '/' + fileName);
}
};
Object.keys(_options).forEach(function(opt) {
options[opt] = _options[opt];
});
options.plugins = options.plugins.concat([
getDebugMacroPlugins(),
['transform-es2015-modules-amd', { noInterop: true, loose: true }],
'transform-es2015-arrow-functions',
'transform-es2015-computed-properties',
'transform-es2015-shorthand-properties',
'transform-es2015-template-literals',
'transform-es2015-parameters',
'transform-es2015-destructuring',
'transform-es2015-spread',
'transform-es2015-block-scoping',
'transform-es2015-constants',
['transform-es2015-classes', { loose: true }],
], options.postTransformPlugins).filter(Boolean);
// this is not a "real" babel option, so we delete it
delete options.postTransformPlugins;
return options;
}
module.exports = function(packageName, tree, _options) {
var options = babelOptions(packageName, _options);
return babel(tree, options);
};