babel-preset-react-app 3.0.2 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/create.js +135 -0
- package/dev.js +11 -0
- package/index.js +4 -123
- package/package.json +12 -7
- package/prod.js +11 -0
- package/test.js +11 -0
package/README.md
CHANGED
@@ -16,6 +16,12 @@ If you want to use this Babel preset in a project not built with Create React Ap
|
|
16
16
|
|
17
17
|
First, [install Babel](https://babeljs.io/docs/setup/).
|
18
18
|
|
19
|
+
Then install babel-preset-react-app.
|
20
|
+
|
21
|
+
```sh
|
22
|
+
npm install babel-preset-react-app --save-dev
|
23
|
+
```
|
24
|
+
|
19
25
|
Then create a file named `.babelrc` with following contents in the root folder of your project:
|
20
26
|
|
21
27
|
```js
|
package/create.js
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
3
|
+
*
|
4
|
+
* This source code is licensed under the MIT license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
'use strict';
|
8
|
+
|
9
|
+
module.exports = function create(env) {
|
10
|
+
if (env !== 'development' && env !== 'test' && env !== 'production') {
|
11
|
+
throw new Error(
|
12
|
+
'Using `babel-preset-react-app` requires that you specify `NODE_ENV` or ' +
|
13
|
+
'`BABEL_ENV` environment variables. Valid values are "development", ' +
|
14
|
+
'"test", and "production". Instead, received: ' +
|
15
|
+
JSON.stringify(env) +
|
16
|
+
'.'
|
17
|
+
);
|
18
|
+
}
|
19
|
+
|
20
|
+
const plugins = [
|
21
|
+
// Necessary to include regardless of the environment because
|
22
|
+
// in practice some other transforms (such as object-rest-spread)
|
23
|
+
// don't work without it: https://github.com/babel/babel/issues/7215
|
24
|
+
require.resolve('babel-plugin-transform-es2015-destructuring'),
|
25
|
+
// class { handleClick = () => { } }
|
26
|
+
require.resolve('babel-plugin-transform-class-properties'),
|
27
|
+
// The following two plugins use Object.assign directly, instead of Babel's
|
28
|
+
// extends helper. Note that this assumes `Object.assign` is available.
|
29
|
+
// { ...todo, completed: true }
|
30
|
+
[
|
31
|
+
require.resolve('babel-plugin-transform-object-rest-spread'),
|
32
|
+
{
|
33
|
+
useBuiltIns: true,
|
34
|
+
},
|
35
|
+
],
|
36
|
+
// Transforms JSX
|
37
|
+
[
|
38
|
+
require.resolve('babel-plugin-transform-react-jsx'),
|
39
|
+
{
|
40
|
+
useBuiltIns: true,
|
41
|
+
},
|
42
|
+
],
|
43
|
+
// Polyfills the runtime needed for async/await and generators
|
44
|
+
[
|
45
|
+
require.resolve('babel-plugin-transform-runtime'),
|
46
|
+
{
|
47
|
+
helpers: false,
|
48
|
+
polyfill: false,
|
49
|
+
regenerator: true,
|
50
|
+
},
|
51
|
+
],
|
52
|
+
];
|
53
|
+
|
54
|
+
if (env === 'development' || env === 'test') {
|
55
|
+
// The following two plugins are currently necessary to make React warnings
|
56
|
+
// include more valuable information. They are included here because they are
|
57
|
+
// currently not enabled in babel-preset-react. See the below threads for more info:
|
58
|
+
// https://github.com/babel/babel/issues/4702
|
59
|
+
// https://github.com/babel/babel/pull/3540#issuecomment-228673661
|
60
|
+
// https://github.com/facebookincubator/create-react-app/issues/989
|
61
|
+
plugins.push.apply(plugins, [
|
62
|
+
// Adds component stack to warning messages
|
63
|
+
require.resolve('babel-plugin-transform-react-jsx-source'),
|
64
|
+
// Adds __self attribute to JSX which React will use for some warnings
|
65
|
+
require.resolve('babel-plugin-transform-react-jsx-self'),
|
66
|
+
]);
|
67
|
+
}
|
68
|
+
|
69
|
+
if (env === 'test') {
|
70
|
+
return {
|
71
|
+
presets: [
|
72
|
+
// ES features necessary for user's Node version
|
73
|
+
[
|
74
|
+
require('babel-preset-env').default,
|
75
|
+
{
|
76
|
+
targets: {
|
77
|
+
node: 'current',
|
78
|
+
},
|
79
|
+
},
|
80
|
+
],
|
81
|
+
// JSX, Flow
|
82
|
+
require.resolve('babel-preset-react'),
|
83
|
+
],
|
84
|
+
plugins: plugins.concat([
|
85
|
+
// Compiles import() to a deferred require()
|
86
|
+
require.resolve('babel-plugin-dynamic-import-node'),
|
87
|
+
]),
|
88
|
+
};
|
89
|
+
} else {
|
90
|
+
return {
|
91
|
+
presets: [
|
92
|
+
// Latest stable ECMAScript features
|
93
|
+
[
|
94
|
+
require.resolve('babel-preset-env'),
|
95
|
+
{
|
96
|
+
targets: {
|
97
|
+
// React parses on ie 9, so we should too
|
98
|
+
ie: 9,
|
99
|
+
// We currently minify with uglify
|
100
|
+
// Remove after https://github.com/mishoo/UglifyJS2/issues/448
|
101
|
+
uglify: true,
|
102
|
+
},
|
103
|
+
// Disable polyfill transforms
|
104
|
+
useBuiltIns: false,
|
105
|
+
// Do not transform modules to CJS
|
106
|
+
modules: false,
|
107
|
+
},
|
108
|
+
],
|
109
|
+
// JSX, Flow
|
110
|
+
require.resolve('babel-preset-react'),
|
111
|
+
],
|
112
|
+
plugins: plugins.concat([
|
113
|
+
// function* () { yield 42; yield 43; }
|
114
|
+
[
|
115
|
+
require.resolve('babel-plugin-transform-regenerator'),
|
116
|
+
{
|
117
|
+
// Async functions are converted to generators by babel-preset-env
|
118
|
+
async: false,
|
119
|
+
},
|
120
|
+
],
|
121
|
+
// Adds syntax support for import()
|
122
|
+
require.resolve('babel-plugin-syntax-dynamic-import'),
|
123
|
+
]),
|
124
|
+
};
|
125
|
+
|
126
|
+
if (env === 'production') {
|
127
|
+
// Optimization: hoist JSX that never changes out of render()
|
128
|
+
// Disabled because of issues: https://github.com/facebookincubator/create-react-app/issues/553
|
129
|
+
// TODO: Enable again when these issues are resolved.
|
130
|
+
// plugins.push.apply(plugins, [
|
131
|
+
// require.resolve('babel-plugin-transform-react-constant-elements')
|
132
|
+
// ]);
|
133
|
+
}
|
134
|
+
}
|
135
|
+
};
|
package/dev.js
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
3
|
+
*
|
4
|
+
* This source code is licensed under the MIT license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
'use strict';
|
8
|
+
|
9
|
+
const create = require('./create');
|
10
|
+
|
11
|
+
module.exports = create('development');
|
package/index.js
CHANGED
@@ -1,42 +1,12 @@
|
|
1
1
|
/**
|
2
2
|
* Copyright (c) 2015-present, Facebook, Inc.
|
3
|
-
* All rights reserved.
|
4
3
|
*
|
5
|
-
* This source code is licensed under the
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
7
|
-
* of patent rights can be found in the PATENTS file in the same directory.
|
4
|
+
* This source code is licensed under the MIT license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
8
6
|
*/
|
9
7
|
'use strict';
|
10
8
|
|
11
|
-
const
|
12
|
-
// class { handleClick = () => { } }
|
13
|
-
require.resolve('babel-plugin-transform-class-properties'),
|
14
|
-
// The following two plugins use Object.assign directly, instead of Babel's
|
15
|
-
// extends helper. Note that this assumes `Object.assign` is available.
|
16
|
-
// { ...todo, completed: true }
|
17
|
-
[
|
18
|
-
require.resolve('babel-plugin-transform-object-rest-spread'),
|
19
|
-
{
|
20
|
-
useBuiltIns: true,
|
21
|
-
},
|
22
|
-
],
|
23
|
-
// Transforms JSX
|
24
|
-
[
|
25
|
-
require.resolve('babel-plugin-transform-react-jsx'),
|
26
|
-
{
|
27
|
-
useBuiltIns: true,
|
28
|
-
},
|
29
|
-
],
|
30
|
-
// Polyfills the runtime needed for async/await and generators
|
31
|
-
[
|
32
|
-
require.resolve('babel-plugin-transform-runtime'),
|
33
|
-
{
|
34
|
-
helpers: false,
|
35
|
-
polyfill: false,
|
36
|
-
regenerator: true,
|
37
|
-
},
|
38
|
-
],
|
39
|
-
];
|
9
|
+
const create = require('./create');
|
40
10
|
|
41
11
|
// This is similar to how `env` works in Babel:
|
42
12
|
// https://babeljs.io/docs/usage/babelrc/#env-option
|
@@ -45,94 +15,5 @@ const plugins = [
|
|
45
15
|
// https://github.com/facebookincubator/create-react-app/issues/720
|
46
16
|
// It’s also nice that we can enforce `NODE_ENV` being specified.
|
47
17
|
var env = process.env.BABEL_ENV || process.env.NODE_ENV;
|
48
|
-
if (env !== 'development' && env !== 'test' && env !== 'production') {
|
49
|
-
throw new Error(
|
50
|
-
'Using `babel-preset-react-app` requires that you specify `NODE_ENV` or ' +
|
51
|
-
'`BABEL_ENV` environment variables. Valid values are "development", ' +
|
52
|
-
'"test", and "production". Instead, received: ' +
|
53
|
-
JSON.stringify(env) +
|
54
|
-
'.'
|
55
|
-
);
|
56
|
-
}
|
57
18
|
|
58
|
-
|
59
|
-
// The following two plugins are currently necessary to make React warnings
|
60
|
-
// include more valuable information. They are included here because they are
|
61
|
-
// currently not enabled in babel-preset-react. See the below threads for more info:
|
62
|
-
// https://github.com/babel/babel/issues/4702
|
63
|
-
// https://github.com/babel/babel/pull/3540#issuecomment-228673661
|
64
|
-
// https://github.com/facebookincubator/create-react-app/issues/989
|
65
|
-
plugins.push.apply(plugins, [
|
66
|
-
// Adds component stack to warning messages
|
67
|
-
require.resolve('babel-plugin-transform-react-jsx-source'),
|
68
|
-
// Adds __self attribute to JSX which React will use for some warnings
|
69
|
-
require.resolve('babel-plugin-transform-react-jsx-self'),
|
70
|
-
]);
|
71
|
-
}
|
72
|
-
|
73
|
-
if (env === 'test') {
|
74
|
-
module.exports = {
|
75
|
-
presets: [
|
76
|
-
// ES features necessary for user's Node version
|
77
|
-
[
|
78
|
-
require('babel-preset-env').default,
|
79
|
-
{
|
80
|
-
targets: {
|
81
|
-
node: 'current',
|
82
|
-
},
|
83
|
-
},
|
84
|
-
],
|
85
|
-
// JSX, Flow
|
86
|
-
require.resolve('babel-preset-react'),
|
87
|
-
],
|
88
|
-
plugins: plugins.concat([
|
89
|
-
// Compiles import() to a deferred require()
|
90
|
-
require.resolve('babel-plugin-dynamic-import-node'),
|
91
|
-
]),
|
92
|
-
};
|
93
|
-
} else {
|
94
|
-
module.exports = {
|
95
|
-
presets: [
|
96
|
-
// Latest stable ECMAScript features
|
97
|
-
[
|
98
|
-
require.resolve('babel-preset-env'),
|
99
|
-
{
|
100
|
-
targets: {
|
101
|
-
// React parses on ie 9, so we should too
|
102
|
-
ie: 9,
|
103
|
-
// We currently minify with uglify
|
104
|
-
// Remove after https://github.com/mishoo/UglifyJS2/issues/448
|
105
|
-
uglify: true,
|
106
|
-
},
|
107
|
-
// Disable polyfill transforms
|
108
|
-
useBuiltIns: false,
|
109
|
-
// Do not transform modules to CJS
|
110
|
-
modules: false,
|
111
|
-
},
|
112
|
-
],
|
113
|
-
// JSX, Flow
|
114
|
-
require.resolve('babel-preset-react'),
|
115
|
-
],
|
116
|
-
plugins: plugins.concat([
|
117
|
-
// function* () { yield 42; yield 43; }
|
118
|
-
[
|
119
|
-
require.resolve('babel-plugin-transform-regenerator'),
|
120
|
-
{
|
121
|
-
// Async functions are converted to generators by babel-preset-env
|
122
|
-
async: false,
|
123
|
-
},
|
124
|
-
],
|
125
|
-
// Adds syntax support for import()
|
126
|
-
require.resolve('babel-plugin-syntax-dynamic-import'),
|
127
|
-
]),
|
128
|
-
};
|
129
|
-
|
130
|
-
if (env === 'production') {
|
131
|
-
// Optimization: hoist JSX that never changes out of render()
|
132
|
-
// Disabled because of issues: https://github.com/facebookincubator/create-react-app/issues/553
|
133
|
-
// TODO: Enable again when these issues are resolved.
|
134
|
-
// plugins.push.apply(plugins, [
|
135
|
-
// require.resolve('babel-plugin-transform-react-constant-elements')
|
136
|
-
// ]);
|
137
|
-
}
|
138
|
-
}
|
19
|
+
module.exports = create(env);
|
package/package.json
CHANGED
@@ -1,27 +1,32 @@
|
|
1
1
|
{
|
2
2
|
"name": "babel-preset-react-app",
|
3
|
-
"version": "3.
|
3
|
+
"version": "3.1.2",
|
4
4
|
"description": "Babel preset used by Create React App",
|
5
5
|
"repository": "facebookincubator/create-react-app",
|
6
|
-
"license": "
|
6
|
+
"license": "MIT",
|
7
7
|
"bugs": {
|
8
8
|
"url": "https://github.com/facebookincubator/create-react-app/issues"
|
9
9
|
},
|
10
10
|
"files": [
|
11
|
-
"index.js"
|
11
|
+
"index.js",
|
12
|
+
"create.js",
|
13
|
+
"dev.js",
|
14
|
+
"prod.js",
|
15
|
+
"test.js"
|
12
16
|
],
|
13
17
|
"dependencies": {
|
14
|
-
"babel-plugin-dynamic-import-node": "1.0
|
18
|
+
"babel-plugin-dynamic-import-node": "1.1.0",
|
15
19
|
"babel-plugin-syntax-dynamic-import": "6.18.0",
|
16
20
|
"babel-plugin-transform-class-properties": "6.24.1",
|
17
|
-
"babel-plugin-transform-
|
21
|
+
"babel-plugin-transform-es2015-destructuring": "6.23.0",
|
22
|
+
"babel-plugin-transform-object-rest-spread": "6.26.0",
|
18
23
|
"babel-plugin-transform-react-constant-elements": "6.23.0",
|
19
24
|
"babel-plugin-transform-react-jsx": "6.24.1",
|
20
25
|
"babel-plugin-transform-react-jsx-self": "6.22.0",
|
21
26
|
"babel-plugin-transform-react-jsx-source": "6.22.0",
|
22
|
-
"babel-plugin-transform-regenerator": "6.
|
27
|
+
"babel-plugin-transform-regenerator": "6.26.0",
|
23
28
|
"babel-plugin-transform-runtime": "6.23.0",
|
24
|
-
"babel-preset-env": "1.
|
29
|
+
"babel-preset-env": "1.6.1",
|
25
30
|
"babel-preset-react": "6.24.1"
|
26
31
|
},
|
27
32
|
"peerDependencies": {
|
package/prod.js
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
3
|
+
*
|
4
|
+
* This source code is licensed under the MIT license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
'use strict';
|
8
|
+
|
9
|
+
const create = require('./create');
|
10
|
+
|
11
|
+
module.exports = create('production');
|
package/test.js
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
3
|
+
*
|
4
|
+
* This source code is licensed under the MIT license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
'use strict';
|
8
|
+
|
9
|
+
const create = require('./create');
|
10
|
+
|
11
|
+
module.exports = create('test');
|