|
2 | 2 | const { ProvidePlugin } = require("webpack") |
3 | 3 | const filterObject = require("filter-obj") |
4 | 4 |
|
5 | | -const excludeObjectKeys = (object, excludeKeys) => filterObject(object, key => !excludeKeys.includes(key)) |
| 5 | +function createAliasFilter({ includeAliases, excludeAliases }) { |
| 6 | + if (includeAliases.length > 0) { |
| 7 | + return object => filterObject(object, key => includeAliases.includes(key)) |
| 8 | + } |
| 9 | + |
| 10 | + return object => filterObject(object, key => !excludeAliases.includes(key)) |
| 11 | +} |
6 | 12 |
|
7 | 13 | module.exports = class NodePolyfillPlugin { |
8 | 14 | constructor(options = {}) { |
9 | 15 | this.options = { |
10 | 16 | excludeAliases: [], |
| 17 | + includeAliases: [], |
11 | 18 | ...options |
12 | 19 | } |
| 20 | + |
| 21 | + if (this.options.includeAliases.length > 0 && this.options.excludeAliases.length > 0) { |
| 22 | + throw new Error("excludeAliases and includeAliases are mutually exclusive") |
| 23 | + } |
13 | 24 | } |
14 | 25 |
|
15 | 26 | apply(compiler) { |
16 | | - compiler.options.plugins.push(new ProvidePlugin(excludeObjectKeys({ |
| 27 | + const filter = createAliasFilter(this.options) |
| 28 | + |
| 29 | + compiler.options.plugins.push(new ProvidePlugin(filter({ |
17 | 30 | Buffer: [require.resolve("buffer/"), "Buffer"], |
18 | 31 | console: require.resolve("console-browserify"), |
19 | 32 | process: require.resolve("process/browser") |
20 | | - }, this.options.excludeAliases))) |
| 33 | + }))) |
21 | 34 |
|
22 | 35 | compiler.options.resolve.fallback = { |
23 | | - ...excludeObjectKeys({ |
| 36 | + ...filter({ |
24 | 37 | assert: require.resolve("assert/"), |
25 | 38 | buffer: require.resolve("buffer/"), |
26 | 39 | console: require.resolve("console-browserify"), |
@@ -51,7 +64,7 @@ module.exports = class NodePolyfillPlugin { |
51 | 64 | util: require.resolve("util/"), |
52 | 65 | vm: require.resolve("vm-browserify"), |
53 | 66 | zlib: require.resolve("browserify-zlib") |
54 | | - }, this.options.excludeAliases), |
| 67 | + }), |
55 | 68 | ...compiler.options.resolve.fallback |
56 | 69 | } |
57 | 70 | } |
|
0 commit comments