|
1 | | -const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); |
| 1 | +const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config"); |
2 | 2 |
|
3 | 3 | const defaultConfig = getDefaultConfig(__dirname); |
4 | 4 |
|
5 | 5 | const config = { |
6 | | - resolver: { |
7 | | - extraNodeModules: { |
8 | | - assert: require.resolve("empty-module"), // assert can be polyfilled here if needed |
9 | | - http: require.resolve("empty-module"), // stream-http can be polyfilled here if needed |
10 | | - https: require.resolve("empty-module"), // https-browserify can be polyfilled here if needed |
11 | | - os: require.resolve("empty-module"), // os-browserify can be polyfilled here if needed |
12 | | - url: require.resolve("empty-module"), // url can be polyfilled here if needed |
13 | | - zlib: require.resolve("empty-module"), // browserify-zlib can be polyfilled here if needed |
14 | | - path: require.resolve("empty-module"), |
15 | | - crypto: require.resolve("crypto-browserify"), |
16 | | - stream: require.resolve("readable-stream"), |
17 | | - }, |
18 | | - sourceExts: [...defaultConfig.resolver.sourceExts, 'svg'], |
| 6 | + resolver: { |
| 7 | + extraNodeModules: { |
| 8 | + assert: require.resolve("empty-module"), // assert can be polyfilled here if needed |
| 9 | + http: require.resolve("empty-module"), // stream-http can be polyfilled here if needed |
| 10 | + https: require.resolve("empty-module"), // https-browserify can be polyfilled here if needed |
| 11 | + os: require.resolve("empty-module"), // os-browserify can be polyfilled here if needed |
| 12 | + url: require.resolve("empty-module"), // url can be polyfilled here if needed |
| 13 | + zlib: require.resolve("empty-module"), // browserify-zlib can be polyfilled here if needed |
| 14 | + path: require.resolve("empty-module"), |
| 15 | + stream: require.resolve("readable-stream"), |
19 | 16 | }, |
| 17 | + sourceExts: [...defaultConfig.resolver.sourceExts, "svg"], |
| 18 | + resolveRequest: (context, moduleName, platform) => { |
| 19 | + if (moduleName === "crypto") { |
| 20 | + // when importing crypto, resolve to react-native-quick-crypto |
| 21 | + return context.resolveRequest(context, "react-native-quick-crypto", platform); |
| 22 | + } |
| 23 | + // otherwise chain to the standard Metro resolver. |
| 24 | + return context.resolveRequest(context, moduleName, platform); |
| 25 | + }, |
| 26 | + }, |
20 | 27 | }; |
21 | 28 |
|
22 | 29 | module.exports = mergeConfig(defaultConfig, config); |
0 commit comments