1 | const path = require("path");
|
2 | const ModuleScopePlugin = require("react-dev-utils/ModuleScopePlugin");
|
3 | const { styles } = require("./constants");
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | module.exports = (options = {}) => {
|
23 |
|
24 |
|
25 |
|
26 |
|
27 | const { globalObjectKey, appRoot, typeFunc } = require("./constants.js");
|
28 |
|
29 | let {
|
30 | port,
|
31 | host,
|
32 | friendly,
|
33 | moduleScope,
|
34 | buildProd,
|
35 | mode
|
36 | } = (global[globalObjectKey] = o = require("./helpers/parse-config")(
|
37 | options
|
38 | ));
|
39 |
|
40 | let { applyPlugins, applyRules } = options;
|
41 |
|
42 | let plugins = require("./plugins");
|
43 | let rules = require("./rules");
|
44 |
|
45 | if (typeof applyPlugins === typeFunc) {
|
46 | plugins = applyPlugins(plugins);
|
47 | }
|
48 |
|
49 | if (typeof applyRules === typeFunc) {
|
50 | rules = applyRules(rules);
|
51 | }
|
52 | return {
|
53 | mode,
|
54 | context: appRoot,
|
55 | entry: o.entry,
|
56 | output: require('./helpers/output-name')(options.output),
|
57 |
|
58 | optimization: require("./helpers/optimization")(),
|
59 | module: {
|
60 |
|
61 | strictExportPresence: true,
|
62 | rules
|
63 | },
|
64 | plugins,
|
65 | resolve: {
|
66 | extensions: require("./helpers/get-resolve-extensions"),
|
67 |
|
68 | alias: o.alias,
|
69 | plugins: [new ModuleScopePlugin(moduleScope)]
|
70 | },
|
71 | externals: options.externals,
|
72 | devServer: Object.assign(
|
73 | {
|
74 | port: port,
|
75 | host: host,
|
76 | hot: true,
|
77 | contentBase: path.resolve(appRoot, "dist/"),
|
78 | publicPath: "/",
|
79 | headers: { "Access-Control-Allow-Origin": "*" },
|
80 | quiet: friendly
|
81 | },
|
82 | options.devServer
|
83 | ),
|
84 | target: "web",
|
85 | node: {
|
86 | setImmediate: false,
|
87 | dgram: "empty",
|
88 | fs: "empty",
|
89 | net: "empty",
|
90 | tls: "empty",
|
91 | child_process: "empty"
|
92 | },
|
93 | devtool: buildProd ? "cheap-source-map" : false
|
94 | };
|
95 | };
|