source: frontend/node_modules/babel-preset-react-app/dependencies.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 5.0 KB
Line 
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
9const path = require('path');
10
11const validateBoolOption = (name, value, defaultValue) => {
12 if (typeof value === 'undefined') {
13 value = defaultValue;
14 }
15
16 if (typeof value !== 'boolean') {
17 throw new Error(`Preset react-app: '${name}' option must be a boolean.`);
18 }
19
20 return value;
21};
22
23module.exports = function (api, opts) {
24 if (!opts) {
25 opts = {};
26 }
27
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
39 var areHelpersEnabled = validateBoolOption('helpers', opts.helpers, false);
40 var useAbsoluteRuntime = validateBoolOption(
41 'absoluteRuntime',
42 opts.absoluteRuntime,
43 true
44 );
45
46 var absoluteRuntimePath = undefined;
47 if (useAbsoluteRuntime) {
48 absoluteRuntimePath = path.dirname(
49 require.resolve('@babel/runtime/package.json')
50 );
51 }
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 {
85 // Allow importing core-js in entrypoint and use browserlist to select polyfills
86 useBuiltIns: 'entry',
87 // Set the corejs version we are using to avoid warnings in console
88 // This will need to change once we upgrade to corejs@3
89 corejs: 3,
90 // Exclude transforms that make all code slower
91 exclude: ['transform-typeof-symbol'],
92 },
93 ],
94 ].filter(Boolean),
95 plugins: [
96 // Disabled as it's handled automatically by preset-env, and `selectiveLoose` isn't
97 // yet merged into babel: https://github.com/babel/babel/pull/9486
98 // Related: https://github.com/facebook/create-react-app/pull/8215
99 // [
100 // require('@babel/plugin-transform-destructuring').default,
101 // {
102 // // Use loose mode for performance:
103 // // https://github.com/facebook/create-react-app/issues/5602
104 // loose: false,
105 // selectiveLoose: [
106 // 'useState',
107 // 'useEffect',
108 // 'useContext',
109 // 'useReducer',
110 // 'useCallback',
111 // 'useMemo',
112 // 'useRef',
113 // 'useImperativeHandle',
114 // 'useLayoutEffect',
115 // 'useDebugValue',
116 // ],
117 // },
118 // ],
119 // Polyfills the runtime needed for async/await, generators, and friends
120 // https://babeljs.io/docs/en/babel-plugin-transform-runtime
121 [
122 require('@babel/plugin-transform-runtime').default,
123 {
124 corejs: false,
125 helpers: areHelpersEnabled,
126 // By default, babel assumes babel/runtime version 7.0.0-beta.0,
127 // explicitly resolving to match the provided helper functions.
128 // https://github.com/babel/babel/issues/10261
129 version: require('@babel/runtime/package.json').version,
130 regenerator: true,
131 // https://babeljs.io/docs/en/babel-plugin-transform-runtime#useesmodules
132 // We should turn this on once the lowest version of Node LTS
133 // supports ES Modules.
134 useESModules: isEnvDevelopment || isEnvProduction,
135 // Undocumented option that lets us encapsulate our runtime, ensuring
136 // the correct version is used
137 // https://github.com/babel/babel/blob/090c364a90fe73d36a30707fc612ce037bdbbb24/packages/babel-plugin-transform-runtime/src/index.js#L35-L42
138 absoluteRuntime: absoluteRuntimePath,
139 },
140 ],
141 ].filter(Boolean),
142 };
143};
Note: See TracBrowser for help on using the repository browser.