@@ -18,6 +18,11 @@ const getParser = require('./getParser');
18
18
19
19
const jscodeshift = require ( './core' ) ;
20
20
21
+ let presetEnv ;
22
+ try {
23
+ presetEnv = require ( '@babel/preset-env' ) ;
24
+ } catch { }
25
+
21
26
let emitter ;
22
27
let finish ;
23
28
let notify ;
@@ -48,19 +53,27 @@ function prepareJscodeshift(options) {
48
53
49
54
function setup ( tr , babel ) {
50
55
if ( babel === 'babel' ) {
56
+ const presets = [ ] ;
57
+ if ( presetEnv ) {
58
+ presets . push ( [
59
+ presetEnv . default ,
60
+ { targets : { node : true } } ,
61
+ ] ) ;
62
+ }
63
+ presets . push (
64
+ / \. t s x ? $ / . test ( tr ) ?
65
+ require ( '@babel/preset-typescript' ) . default :
66
+ require ( '@babel/preset-flow' ) . default
67
+ ) ;
68
+
51
69
require ( '@babel/register' ) ( {
52
70
babelrc : false ,
53
- presets : [
54
- [
55
- require ( '@babel/preset-env' ) . default ,
56
- { targets : { node : true } } ,
57
- ] ,
58
- / \. t s x ? $ / . test ( tr ) ?
59
- require ( '@babel/preset-typescript' ) . default :
60
- require ( '@babel/preset-flow' ) . default ,
61
- ] ,
71
+ presets,
62
72
plugins : [
63
73
require ( '@babel/plugin-proposal-class-properties' ) . default ,
74
+ require ( '@babel/plugin-proposal-nullish-coalescing-operator' ) . default ,
75
+ require ( '@babel/plugin-proposal-optional-chaining' ) . default ,
76
+ require ( '@babel/plugin-transform-modules-commonjs' ) . default ,
64
77
] ,
65
78
extensions : [ ...DEFAULT_EXTENSIONS , '.ts' , '.tsx' ] ,
66
79
// By default, babel register only compiles things inside the current working directory.
0 commit comments