babel-preset-react-app-new 0.0.1 → 0.0.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/dependencies.js +124 -121
- package/package.json +1 -1
package/dependencies.js
CHANGED
|
@@ -9,135 +9,138 @@
|
|
|
9
9
|
const path = require('path');
|
|
10
10
|
|
|
11
11
|
const validateBoolOption = (name, value, defaultValue) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
if (typeof value === 'undefined') {
|
|
13
|
+
value = defaultValue;
|
|
14
|
+
}
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
if (typeof value !== 'boolean') {
|
|
17
|
+
throw new Error(`Preset react-app: '${name}' option must be a boolean.`);
|
|
18
|
+
}
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
return value;
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
module.exports = function (api, opts) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
if (!opts) {
|
|
25
|
+
opts = {};
|
|
26
|
+
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
28
|
+
// This is similar to how `env` works in Babel:
|
|
29
|
+
// https://babeljs.io/docs/usage/babelrc/#env-option
|
|
30
|
+
// We are not using `env` because it’s ignored in versions > babel-core@6.10.4:
|
|
31
|
+
// https://github.com/babel/babel/issues/4539
|
|
32
|
+
// https://github.com/facebook/create-react-app/issues/720
|
|
33
|
+
// It’s also nice that we can enforce `NODE_ENV` being specified.
|
|
34
|
+
var env = process.env.BABEL_ENV || process.env.NODE_ENV;
|
|
35
|
+
var isEnvDevelopment = env === 'development';
|
|
36
|
+
var isEnvProduction = env === 'production';
|
|
37
|
+
var isEnvTest = env === 'test';
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
'absoluteRuntime',
|
|
42
|
-
opts.absoluteRuntime,
|
|
43
|
-
true
|
|
44
|
-
);
|
|
39
|
+
var areHelpersEnabled = validateBoolOption('helpers', opts.helpers, false);
|
|
40
|
+
var useAbsoluteRuntime = validateBoolOption('absoluteRuntime', opts.absoluteRuntime, true);
|
|
45
41
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
);
|
|
51
|
-
}
|
|
42
|
+
var absoluteRuntimePath = undefined;
|
|
43
|
+
if (useAbsoluteRuntime) {
|
|
44
|
+
absoluteRuntimePath = path.dirname(require.resolve('@babel/runtime/package.json'));
|
|
45
|
+
}
|
|
52
46
|
|
|
53
|
-
|
|
54
|
-
throw new Error(
|
|
55
|
-
'Using `babel-preset-react-app` requires that you specify `NODE_ENV` or ' +
|
|
56
|
-
'`BABEL_ENV` environment variables. Valid values are "development", ' +
|
|
57
|
-
'"test", and "production". Instead, received: ' +
|
|
58
|
-
JSON.stringify(env) +
|
|
59
|
-
'.'
|
|
60
|
-
);
|
|
61
|
-
}
|
|
47
|
+
var corejsVerson = '3.30';
|
|
62
48
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
49
|
+
try {
|
|
50
|
+
corejsVerson = require('core-js/package.json').version;
|
|
51
|
+
} catch (err) {}
|
|
52
|
+
|
|
53
|
+
if (!isEnvDevelopment && !isEnvProduction && !isEnvTest) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
'Using `babel-preset-react-app` requires that you specify `NODE_ENV` or ' +
|
|
56
|
+
'`BABEL_ENV` environment variables. Valid values are "development", ' +
|
|
57
|
+
'"test", and "production". Instead, received: ' +
|
|
58
|
+
JSON.stringify(env) +
|
|
59
|
+
'.'
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
// Babel assumes ES Modules, which isn't safe until CommonJS
|
|
65
|
+
// dies. This changes the behavior to assume CommonJS unless
|
|
66
|
+
// an `import` or `export` is present in the file.
|
|
67
|
+
// https://github.com/webpack/webpack/issues/4039#issuecomment-419284940
|
|
68
|
+
sourceType: 'unambiguous',
|
|
69
|
+
presets: [
|
|
70
|
+
isEnvTest && [
|
|
71
|
+
// ES features necessary for user's Node version
|
|
72
|
+
require('@babel/preset-env').default,
|
|
73
|
+
{
|
|
74
|
+
targets: {
|
|
75
|
+
node: 'current'
|
|
76
|
+
},
|
|
77
|
+
// Exclude transforms that make all code slower
|
|
78
|
+
exclude: ['transform-typeof-symbol']
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
(isEnvProduction || isEnvDevelopment) && [
|
|
82
|
+
// Latest stable ECMAScript features
|
|
83
|
+
require('@babel/preset-env').default,
|
|
84
|
+
Object.assign(
|
|
85
|
+
{
|
|
86
|
+
// Allow importing core-js in entrypoint and use browserlist to select polyfills
|
|
87
|
+
useBuiltIns: 'entry',
|
|
88
|
+
// Set the corejs version we are using to avoid warnings in console
|
|
89
|
+
// This will need to change once we upgrade to corejs@3
|
|
90
|
+
corejs: corejsVerson,
|
|
91
|
+
// Exclude transforms that make all code slower
|
|
92
|
+
exclude: ['transform-typeof-symbol']
|
|
93
|
+
},
|
|
94
|
+
opts.presetEnvOptions
|
|
95
|
+
)
|
|
96
|
+
]
|
|
97
|
+
].filter(Boolean),
|
|
98
|
+
plugins: [
|
|
99
|
+
// Disabled as it's handled automatically by preset-env, and `selectiveLoose` isn't
|
|
100
|
+
// yet merged into babel: https://github.com/babel/babel/pull/9486
|
|
101
|
+
// Related: https://github.com/facebook/create-react-app/pull/8215
|
|
102
|
+
// [
|
|
103
|
+
// require('@babel/plugin-transform-destructuring').default,
|
|
104
|
+
// {
|
|
105
|
+
// // Use loose mode for performance:
|
|
106
|
+
// // https://github.com/facebook/create-react-app/issues/5602
|
|
107
|
+
// loose: false,
|
|
108
|
+
// selectiveLoose: [
|
|
109
|
+
// 'useState',
|
|
110
|
+
// 'useEffect',
|
|
111
|
+
// 'useContext',
|
|
112
|
+
// 'useReducer',
|
|
113
|
+
// 'useCallback',
|
|
114
|
+
// 'useMemo',
|
|
115
|
+
// 'useRef',
|
|
116
|
+
// 'useImperativeHandle',
|
|
117
|
+
// 'useLayoutEffect',
|
|
118
|
+
// 'useDebugValue',
|
|
119
|
+
// ],
|
|
120
|
+
// },
|
|
121
|
+
// ],
|
|
122
|
+
// Polyfills the runtime needed for async/await, generators, and friends
|
|
123
|
+
// https://babeljs.io/docs/en/babel-plugin-transform-runtime
|
|
124
|
+
[
|
|
125
|
+
require('@babel/plugin-transform-runtime').default,
|
|
126
|
+
{
|
|
127
|
+
corejs: false,
|
|
128
|
+
helpers: areHelpersEnabled,
|
|
129
|
+
// By default, babel assumes babel/runtime version 7.0.0-beta.0,
|
|
130
|
+
// explicitly resolving to match the provided helper functions.
|
|
131
|
+
// https://github.com/babel/babel/issues/10261
|
|
132
|
+
version: require('@babel/runtime/package.json').version,
|
|
133
|
+
regenerator: true,
|
|
134
|
+
// https://babeljs.io/docs/en/babel-plugin-transform-runtime#useesmodules
|
|
135
|
+
// We should turn this on once the lowest version of Node LTS
|
|
136
|
+
// supports ES Modules.
|
|
137
|
+
useESModules: isEnvDevelopment || isEnvProduction,
|
|
138
|
+
// Undocumented option that lets us encapsulate our runtime, ensuring
|
|
139
|
+
// the correct version is used
|
|
140
|
+
// https://github.com/babel/babel/blob/090c364a90fe73d36a30707fc612ce037bdbbb24/packages/babel-plugin-transform-runtime/src/index.js#L35-L42
|
|
141
|
+
absoluteRuntime: absoluteRuntimePath
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
].filter(Boolean)
|
|
145
|
+
};
|
|
143
146
|
};
|