-
-
Notifications
You must be signed in to change notification settings - Fork 9.4k
/
framework-preset-babel-ember.ts
47 lines (40 loc) · 1.34 KB
/
framework-preset-babel-ember.ts
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
import { TransformOptions } from '@babel/core';
import { precompile } from 'ember-source/dist/ember-template-compiler';
let emberOptions: any;
function precompileWithPlugins(string: string, options: any) {
const precompileOptions: any = options;
if (emberOptions && emberOptions.polyfills) {
precompileOptions.plugins = { ast: emberOptions.polyfills };
}
return precompile(string, precompileOptions);
}
export function babel(config: TransformOptions, options: any) {
if (options && options.presetsList) {
options.presetsList.forEach((e: any, index: number) => {
if (e.preset && e.preset.emberOptions) {
emberOptions = e.preset.emberOptions;
// eslint-disable-next-line no-param-reassign
delete options.presetsList[index].preset.emberOptions;
}
});
}
const babelConfigPlugins = config.plugins || [];
const extraPlugins = [
[
require.resolve('babel-plugin-htmlbars-inline-precompile'),
{
precompile: precompileWithPlugins,
modules: {
'ember-cli-htmlbars': 'hbs',
'ember-cli-htmlbars-inline-precompile': 'default',
'htmlbars-inline-precompile': 'default',
},
},
],
[require.resolve('babel-plugin-ember-modules-api-polyfill')],
];
return {
...config,
plugins: [].concat(babelConfigPlugins, extraPlugins),
};
}