Skip to content

Commit 5caa05d

Browse files
EnoahNetzachEnoah Netzach
authored and
Enoah Netzach
committed
[babel-preset-react-app] Temporary fix missing babel plugins (facebook#1177)
* temporary fix missing babel plugins * Add an issue link
1 parent b844e4e commit 5caa05d

File tree

2 files changed

+39
-26
lines changed

2 files changed

+39
-26
lines changed

packages/babel-preset-react-app/index.js

+36-26
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,32 @@
1111
var path = require('path');
1212

1313
const plugins = [
14-
// class { handleClick = () => { } }
15-
require.resolve('babel-plugin-transform-class-properties'),
16-
// The following two plugins use Object.assign directly, instead of Babel's
17-
// extends helper. Note that this assumes `Object.assign` is available.
18-
// { ...todo, completed: true }
19-
[require.resolve('babel-plugin-transform-object-rest-spread'), {
20-
useBuiltIns: true
21-
}],
22-
// Transforms JSX
23-
[require.resolve('babel-plugin-transform-react-jsx'), {
24-
useBuiltIns: true
25-
}],
26-
// function* () { yield 42; yield 43; }
27-
[require.resolve('babel-plugin-transform-regenerator'), {
28-
// Async functions are converted to generators by babel-preset-latest
29-
async: false
30-
}],
31-
// Polyfills the runtime needed for async/await and generators
32-
[require.resolve('babel-plugin-transform-runtime'), {
33-
helpers: false,
34-
polyfill: false,
35-
regenerator: true,
36-
// Resolve the Babel runtime relative to the config.
37-
moduleName: path.dirname(require.resolve('babel-runtime/package'))
38-
}]
39-
];
14+
// class { handleClick = () => { } }
15+
require.resolve('babel-plugin-transform-class-properties'),
16+
// The following two plugins use Object.assign directly, instead of Babel's
17+
// extends helper. Note that this assumes `Object.assign` is available.
18+
// { ...todo, completed: true }
19+
[require.resolve('babel-plugin-transform-object-rest-spread'), {
20+
useBuiltIns: true
21+
}],
22+
// Transforms JSX
23+
[require.resolve('babel-plugin-transform-react-jsx'), {
24+
useBuiltIns: true
25+
}],
26+
// function* () { yield 42; yield 43; }
27+
[require.resolve('babel-plugin-transform-regenerator'), {
28+
// Async functions are converted to generators by babel-preset-latest
29+
async: false
30+
}],
31+
// Polyfills the runtime needed for async/await and generators
32+
[require.resolve('babel-plugin-transform-runtime'), {
33+
helpers: false,
34+
polyfill: false,
35+
regenerator: true,
36+
// Resolve the Babel runtime relative to the config.
37+
moduleName: path.dirname(require.resolve('babel-runtime/package'))
38+
}]
39+
];
4040

4141
// This is similar to how `env` works in Babel:
4242
// https://babeljs.io/docs/usage/babelrc/#env-option
@@ -69,6 +69,16 @@ if (env === 'development' || env === 'test') {
6969
}
7070

7171
if (env === 'test') {
72+
// The following plugins are a temporary workaround because
73+
// `babel-plugin-transform-regenerator` apparently needs them
74+
// and `babel-preset-env` doesn't detect it.
75+
// https://github.com/facebookincubator/create-react-app/issues/1156
76+
plugins.push.apply(plugins, [
77+
require.resolve('babel-plugin-transform-es2015-arrow-functions'),
78+
require.resolve('babel-plugin-transform-es2015-destructuring'),
79+
require.resolve('babel-plugin-transform-es2015-parameters')
80+
]);
81+
7282
module.exports = {
7383
presets: [
7484
// ES features necessary for user's Node version

packages/babel-preset-react-app/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
],
1313
"dependencies": {
1414
"babel-plugin-transform-class-properties": "6.16.0",
15+
"babel-plugin-transform-es2015-arrow-functions": "6.8.0",
16+
"babel-plugin-transform-es2015-destructuring": "6.19.0",
17+
"babel-plugin-transform-es2015-parameters": "6.18.0",
1518
"babel-plugin-transform-object-rest-spread": "6.19.0",
1619
"babel-plugin-transform-react-constant-elements": "6.9.1",
1720
"babel-plugin-transform-react-jsx": "6.8.0",

0 commit comments

Comments
 (0)