1
1
const defaultPlugins = [
2
- [ require ( '@babel/plugin-proposal-class-properties' ) ] ,
2
+ [ require ( '@babel/plugin-proposal-class-properties' ) , { loose : true } ] ,
3
3
[ require ( '@babel/plugin-proposal-optional-catch-binding' ) ] ,
4
4
[ require ( '@babel/plugin-syntax-dynamic-import' ) ] ,
5
5
[ require ( '@babel/plugin-syntax-export-default-from' ) ] ,
@@ -13,6 +13,13 @@ const defaultPlugins = [
13
13
[ require ( '@babel/plugin-transform-async-to-generator' ) ] ,
14
14
] ;
15
15
16
+ // Additional plugins for Hermes because it doesn't support ES6 yet
17
+ const hermesPlugins = [
18
+ [ require ( '@babel/plugin-transform-classes' ) ] ,
19
+ [ require ( '@babel/plugin-transform-shorthand-properties' ) ] ,
20
+ [ require ( '@babel/plugin-transform-template-literals' ) , { loose : true } ] ,
21
+ ] ;
22
+
16
23
function isTypeScriptSource ( fileName : string ) {
17
24
return ! ! fileName && fileName . endsWith ( '.ts' ) ;
18
25
}
@@ -21,7 +28,7 @@ function isTSXSource(fileName: string) {
21
28
return ! ! fileName && fileName . endsWith ( '.tsx' ) ;
22
29
}
23
30
24
- export default function getHaulBabelPreset ( ) {
31
+ export default function getHaulBabelPreset ( options : { hermes : boolean } ) {
25
32
return {
26
33
compact : false ,
27
34
overrides : [
@@ -30,16 +37,18 @@ export default function getHaulBabelPreset() {
30
37
plugins : [ require ( '@babel/plugin-transform-flow-strip-types' ) ] ,
31
38
} ,
32
39
{
33
- plugins : defaultPlugins . concat (
34
- process . env . HAUL_PLATFORM
40
+ plugins : [
41
+ ...defaultPlugins ,
42
+ ...( options . hermes ? hermesPlugins : [ ] ) ,
43
+ ...( process . env . HAUL_PLATFORM
35
44
? [
36
45
[
37
46
require ( './transforms/stripDeadPlatformSelect' ) ,
38
47
{ platform : process . env . HAUL_PLATFORM } ,
39
48
] ,
40
49
]
41
- : [ ]
42
- ) ,
50
+ : [ ] ) ,
51
+ ] ,
43
52
} ,
44
53
{
45
54
test : / n o d e _ m o d u l e s \/ r e a c t - n a t i v e / ,
0 commit comments