-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathwebpack.config.js
75 lines (70 loc) · 2.4 KB
/
webpack.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
* This file has been autogenerated as it didn't exist or was made for an older incompatible version.
* This file can be used for manual configuration will not be modified if the flowDefaults constant exists.
*/
const fs = require("fs");
const merge = require("webpack-merge");
// prettier-ignore
const flowDefaults = require('./webpack.generated.js');
const fileNameOfTheFlowGeneratedMainEntryPoint = require("path").resolve(
__dirname,
"target/frontend/generated-flow-imports.js"
);
const filteredFileNameOfTheFlowGeneratedMainEntryPoint =
fileNameOfTheFlowGeneratedMainEntryPoint + "-filtered.js";
module.exports = merge(flowDefaults, {
entry: {
bundle: filteredFileNameOfTheFlowGeneratedMainEntryPoint
},
plugins: [
function(compiler) {
compiler.hooks.beforeRun.tap("Filter out external deps", compilation => {
const original = fs.readFileSync(
fileNameOfTheFlowGeneratedMainEntryPoint,
"utf8"
);
// Exclude component imports which are included in the "bundle" module
const filtered = original
.split("\n")
.filter(row => {
if (row.startsWith("import $css")) return true;
if (row.startsWith("import '.")) return true;
if (row.startsWith("import 'Frontend/")) return true;
if (row.startsWith("import ")) return false;
return true;
})
.join("\n");
fs.writeFileSync(
filteredFileNameOfTheFlowGeneratedMainEntryPoint,
filtered
);
});
}
]
});
/**
* This file can be used to configure the flow plugin defaults.
* <code>
* // Add a custom plugin
* flowDefaults.plugins.push(new MyPlugin());
*
* // Update the rules to also transpile `.mjs` files
* if (!flowDefaults.module.rules[0].test) {
* throw "Unexpected structure in generated webpack config";
* }
* flowDefaults.module.rules[0].test = /\.m?js$/
*
* // Include a custom JS in the entry point in addition to generated-flow-imports.js
* if (typeof flowDefaults.entry.index != "string") {
* throw "Unexpected structure in generated webpack config";
* }
* flowDefaults.entry.index = [flowDefaults.entry.index, "myCustomFile.js"];
* </code>
* or add new configuration in the merge block.
* <code>
* module.exports = merge(flowDefaults, {
* mode: 'development',
* devtool: 'inline-source-map'
* });
* </code>
*/