1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
6 |
|
7 | const babelLoader = require(`babel-loader`);
|
8 |
|
9 | const {
|
10 | prepareOptions,
|
11 | getCustomOptions,
|
12 | mergeConfigItemOptions
|
13 | } = require(`./babel-loader-helpers`);
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 | module.exports = babelLoader.custom(babel => {
|
32 | const toReturn = {
|
33 |
|
34 | customOptions(_ref) {
|
35 | let {
|
36 | stage = `test`
|
37 | } = _ref,
|
38 | options = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["stage"]);
|
39 | return {
|
40 | custom: {
|
41 | stage
|
42 | },
|
43 | loader: Object.assign({
|
44 | cacheDirectory: true,
|
45 | sourceType: `unambiguous`
|
46 | }, getCustomOptions(stage), {}, options)
|
47 | };
|
48 | },
|
49 |
|
50 |
|
51 | config(partialConfig, {
|
52 | customOptions
|
53 | }) {
|
54 | let {
|
55 | options
|
56 | } = partialConfig;
|
57 | const [reduxPresets, reduxPlugins, requiredPresets, requiredPlugins, fallbackPresets] = prepareOptions(babel, customOptions);
|
58 |
|
59 |
|
60 | if (!partialConfig.hasFilesystemConfig()) {
|
61 | options = Object.assign({}, options, {
|
62 | plugins: requiredPlugins,
|
63 | presets: [...fallbackPresets, ...requiredPresets]
|
64 | });
|
65 | } else {
|
66 |
|
67 | options = Object.assign({}, options, {
|
68 | plugins: [...options.plugins, ...requiredPlugins],
|
69 | presets: [...options.presets, ...requiredPresets]
|
70 | });
|
71 | }
|
72 |
|
73 |
|
74 | reduxPresets.forEach(preset => {
|
75 | options.presets = mergeConfigItemOptions({
|
76 | items: options.presets,
|
77 | itemToMerge: preset,
|
78 | type: `preset`,
|
79 | babel
|
80 | });
|
81 | });
|
82 | reduxPlugins.forEach(plugin => {
|
83 | options.plugins = mergeConfigItemOptions({
|
84 | items: options.plugins,
|
85 | itemToMerge: plugin,
|
86 | type: `plugin`,
|
87 | babel
|
88 | });
|
89 | });
|
90 | return options;
|
91 | }
|
92 |
|
93 | };
|
94 | return toReturn;
|
95 | });
|
96 |
|
\ | No newline at end of file |