Live video on the AT Protocol
1// Learn more https://docs.expo.io/guides/customizing-metro
2/**
3 * @type {import('expo/metro-config').MetroConfig}
4 */
5const { getDefaultConfig } = require("expo/metro-config");
6const { FileStore } = require("metro-cache");
7const path = require("path");
8
9let config = getDefaultConfig(__dirname, {
10 // [Web-only]: Enables CSS support in Metro.
11 isCSSEnabled: true,
12});
13
14config.cacheStores = [
15 new FileStore({
16 root: path.join(__dirname, "node_modules", ".cache", "metro"),
17 }),
18];
19
20// Enable Tamagui and add nice web support with optimizing compiler + CSS extraction
21const { withTamagui } = require("@tamagui/metro-plugin");
22config = withTamagui(config, {
23 components: ["tamagui"],
24 config: "./tamagui.config.ts",
25 outputCSS: "./tamagui-web.css",
26});
27
28const overrides = {};
29
30const nativeOverrides = {
31 crypto: "react-native-quick-crypto",
32 // "node:crypto": "react-native-quick-crypto",
33 stream: "readable-stream",
34 // "node:buffer": "buffer",
35 // "node:util": "util",
36 // "node:http": path.resolve(__dirname, "./empty.mjs"),
37 // "node:https": path.resolve(__dirname, "./empty.mjs"),
38 // // "node:events": "events",
39};
40
41config.resolver.resolveRequest = (context, moduleName, platform) => {
42 if (moduleName.includes("zustand")) {
43 const result = require.resolve(moduleName);
44 return context.resolveRequest(context, result, platform);
45 }
46 if (platform !== "web") {
47 for (const [key, value] of Object.entries(nativeOverrides)) {
48 if (moduleName === key) {
49 return context.resolveRequest(context, value, platform);
50 }
51 }
52 }
53 for (const [key, value] of Object.entries(overrides)) {
54 if (moduleName === key) {
55 return context.resolveRequest(context, value, platform);
56 }
57 }
58 // otherwise chain to the standard Metro resolver.
59 return context.resolveRequest(context, moduleName, platform);
60};
61
62config.resolver.sourceExts.push("mjs");
63config.resolver.assetExts.push("md");
64
65config.resolver.unstable_conditionNames.push("@streamplace/dev", "browser");
66
67module.exports = config;