1010
1111var  path  =  require ( 'path' ) ; 
1212
13- module . exports  =  { 
14-   presets : [ 
15-     // Latest stable ECMAScript features 
16-     require . resolve ( 'babel-preset-latest' ) , 
17-     // JSX, Flow 
18-     require . resolve ( 'babel-preset-react' ) 
19-   ] , 
20-   plugins : [ 
13+ const  plugins  =  [ 
2114    // class { handleClick = () => { }  } 
2215    require . resolve ( 'babel-plugin-transform-class-properties' ) , 
2316    // { ...todo, completed: true } 
@@ -35,8 +28,7 @@ module.exports = {
3528      // Resolve the Babel runtime relative to the config. 
3629      moduleName : path . dirname ( require . resolve ( 'babel-runtime/package' ) ) 
3730    } ] 
38-   ] 
39- } ; 
31+   ] ; 
4032
4133// This is similar to how `env` works in Babel: 
4234// https://babeljs.io/docs/usage/babelrc/#env-option 
@@ -52,7 +44,7 @@ if (env !== 'development' && env !== 'test' && env !== 'production') {
5244    '"test", and "production". Instead, received: '  +  JSON . stringify ( env )  +  '.' 
5345  ) ; 
5446} 
55- var   plugins   =   module . exports . plugins ; 
47+ 
5648if  ( env  ===  'development'  ||  env  ===  'test' )  { 
5749  plugins . push . apply ( plugins ,  [ 
5850    // Adds component stack to warning messages 
@@ -61,14 +53,42 @@ if (env === 'development' || env === 'test') {
6153    require . resolve ( 'babel-plugin-transform-react-jsx-self' ) 
6254  ] ) ; 
6355} 
64- if  ( env  ===  'production' )  { 
65-   // Optimization: hoist JSX that never changes out of render() 
66-   // Disabled because of issues: 
67-   // * https://github.com/facebookincubator/create-react-app/issues/525 
68-   // * https://phabricator.babeljs.io/search/query/pCNlnC2xzwzx/ 
69-   // * https://github.com/babel/babel/issues/4516 
70-   // TODO: Enable again when these issues are resolved. 
71-   // plugins.push.apply(plugins, [ 
72-   //   require.resolve('babel-plugin-transform-react-constant-elements') 
73-   // ]); 
56+ 
57+ if  ( env  ===  'test' )  { 
58+   module . exports  =  { 
59+     presets : [ 
60+       // ES features necessary for user's Node version 
61+       [ require ( 'babel-preset-env' ) . default ,  { 
62+         targets : { 
63+           node : parseFloat ( process . versions . node ) , 
64+         } , 
65+       } ] , 
66+       // JSX, Flow 
67+       require . resolve ( 'babel-preset-react' ) 
68+     ] , 
69+     plugins : plugins 
70+   } ; 
71+ }  else  { 
72+   module . exports  =  { 
73+     presets : [ 
74+       // Latest stable ECMAScript features 
75+       require . resolve ( 'babel-preset-latest' ) , 
76+       // JSX, Flow 
77+       require . resolve ( 'babel-preset-react' ) 
78+     ] , 
79+     plugins : plugins 
80+   } ; 
81+ 
82+   if  ( env  ===  'production' )  { 
83+     // Optimization: hoist JSX that never changes out of render() 
84+     // Disabled because of issues: 
85+     // * https://github.com/facebookincubator/create-react-app/issues/525 
86+     // * https://phabricator.babeljs.io/search/query/pCNlnC2xzwzx/ 
87+     // * https://github.com/babel/babel/issues/4516 
88+     // TODO: Enable again when these issues are resolved. 
89+     // plugins.push.apply(plugins, [ 
90+     //   require.resolve('babel-plugin-transform-react-constant-elements') 
91+     // ]); 
92+   } 
7493} 
94+ 
0 commit comments