@@ -36,40 +36,54 @@ export function transform(filename: string, options?: TransformHandleOptions): P
36
36
require . resolve ( '@babel/plugin-syntax-dynamic-import' ) ,
37
37
require . resolve ( 'babel-plugin-add-module-exports' ) ,
38
38
require . resolve ( 'babel-plugin-transform-typescript-metadata' ) ,
39
+ /**
40
+ * Use the legacy (stage 1) decorators syntax and behavior.
41
+ * https://babeljs.io/docs/en/babel-plugin-proposal-decorators#legacy
42
+ * If you are including your plugins manually and using `@babel/plugin-proposal-class-properties`,
43
+ * make sure that `@babel/plugin-proposal-decorators` comes before `@babel/plugin-proposal-class-properties`.
44
+ */
39
45
[ require . resolve ( '@babel/plugin-proposal-decorators' ) , { legacy : true } ] ,
40
46
] ,
41
47
} ;
42
48
43
49
if ( ! babelOptions . envName ) {
44
50
babelOptions . envName = process . env . BABEL_ENV ;
45
51
}
46
-
52
+ const runtimeVersion = semver . clean ( require ( '@babel/runtime/package.json' ) . version ) ;
47
53
if ( cjs ) {
48
54
babelOptions . presets . push ( [
49
- require . resolve ( '@babel/preset-env' ) ,
50
- {
51
- loose : true ,
52
- } ,
53
- ] ) ;
54
- babelOptions . envName = 'cjs' ;
55
- babelOptions . plugins . push ( [
56
- require . resolve ( '@babel/plugin-transform-runtime' ) , {
57
- useESModules : false ,
58
- loose : false ,
55
+ require . resolve ( '@babel/preset-env' ) , {
59
56
modules : 'cjs' ,
60
- // https://github.com/babel/babel/issues/10261#issuecomment-549940457
61
- version : require ( '@babel/helpers/package.json' ) . version ,
57
+ loose : false ,
62
58
} ,
63
59
] ) ;
60
+ babelOptions . envName = 'cjs' ;
61
+ const transformRuntime = {
62
+ modules : 'cjs' ,
63
+ loose : false ,
64
+ /**
65
+ * transform-runtime regression, not requiring _objectSpread helper
66
+ * https://github.com/babel/babel/issues/10261#issuecomment-549940457
67
+ */
68
+ version : require ( '@babel/helpers/package.json' ) . version ,
69
+ } ;
70
+ if ( ! semver . gte ( runtimeVersion , '7.13.0' ) ) {
71
+ /**
72
+ * ⚠️ This option has been deprecated: starting from version 7.13.0,
73
+ * @babel /runtime's package.json uses "exports" option to automatically choose between CJS and ESM helpers.
74
+ * https://babeljs.io/docs/en/babel-plugin-transform-runtime#useesmodules
75
+ */
76
+ ( transformRuntime as any ) . useESModules = ! semver . gte ( runtimeVersion , '7.13.0' ) ;
77
+ }
78
+ babelOptions . plugins . push ( [ require . resolve ( '@babel/plugin-transform-runtime' ) , transformRuntime ] ) ;
64
79
babelOptions . plugins . push ( [ require . resolve ( 'babel-plugin-transform-remove-imports' ) , {
65
80
test : "\\.(less|css)$"
66
81
} ] ) ;
67
- babelOptions . plugins . push ( [ "@babel/plugin-proposal-class-properties" , { loose : true } ] ) ;
68
- babelOptions . plugins . push ( [ "@babel/plugin-transform-classes" , { loose : true } ] ) ;
82
+ babelOptions . plugins . push ( [ "@babel/plugin-proposal-class-properties" , { loose : false } ] ) ;
83
+ babelOptions . plugins . push ( [ "@babel/plugin-transform-classes" , { loose : false } ] ) ;
69
84
}
70
85
71
86
if ( esm ) {
72
- const runtimeVersion = semver . clean ( require ( '@babel/runtime/package.json' ) . version ) ;
73
87
babelOptions . presets . push ( [
74
88
require . resolve ( '@babel/preset-env' ) , {
75
89
modules : false ,
@@ -81,21 +95,26 @@ export function transform(filename: string, options?: TransformHandleOptions): P
81
95
] ) ;
82
96
babelOptions . envName = 'esm' ;
83
97
const transformRuntime = {
84
- useESModules : true ,
85
98
loose : false ,
86
99
modules : 'auto' ,
87
- // https://github.com/babel/babel/issues/10261#issuecomment-549940457
100
+ /**
101
+ * transform-runtime regression, not requiring _objectSpread helper
102
+ * https://github.com/babel/babel/issues/10261#issuecomment-549940457
103
+ */
88
104
version : require ( '@babel/helpers/package.json' ) . version ,
89
105
} ;
90
106
if ( ! semver . gte ( runtimeVersion , '7.13.0' ) ) {
91
- transformRuntime . useESModules = ! semver . gte ( runtimeVersion , '7.13.0' ) ;
107
+ /**
108
+ * ⚠️ This option has been deprecated: starting from version 7.13.0,
109
+ * @babel /runtime's package.json uses "exports" option to automatically choose between CJS and ESM helpers.
110
+ * https://babeljs.io/docs/en/babel-plugin-transform-runtime#useesmodules
111
+ */
112
+ ( transformRuntime as any ) . useESModules = ! semver . gte ( runtimeVersion , '7.13.0' ) ;
92
113
}
93
114
babelOptions . plugins . push ( [ require . resolve ( '@babel/plugin-transform-runtime' ) , transformRuntime ] ) ;
94
- babelOptions . plugins . push ( [ require . resolve ( '@babel/plugin-proposal-class-properties' ) , {
95
- loose : true
96
- } ] ) ;
115
+ babelOptions . plugins . push ( [ require . resolve ( '@babel/plugin-proposal-class-properties' ) , { loose : true } ] ) ;
97
116
babelOptions . plugins . push ( [ require . resolve ( 'babel-plugin-transform-rename-import' ) , {
98
- original : '^(.+?)\\.less$' , replacement : '$1.css'
117
+ original : '^(.+?)\\.( less|scss|sass|styl) $' , replacement : '$1.css'
99
118
} ] ) ;
100
119
}
101
120
if ( envName ) {
0 commit comments