Files
copilotkit__copilotkit/examples/v2/react-native/demo/metro.config.js
Maxim a9b2dbff75 feat: add React Native demo app
Full RN 0.85.2 demo showing chat with useAgent, frontend tools
(theme toggle, app mode), generative UI (pie chart), HITL (meeting
scheduler), shared state (task manager), and thread management.
Points to langgraph-py example runtime.
2026-05-06 16:42:22 -07:00

40 lines
1.3 KiB
JavaScript

const path = require("path");
const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config");
const monorepoRoot = path.resolve(__dirname, "../../../..");
/**
* Metro configuration for pnpm monorepo.
*
* pnpm uses symlinks in node_modules that resolve into the root
* node_modules/.pnpm store. Metro needs watchFolders to cover both
* the workspace packages and the root node_modules so it can follow
* those symlinks. The resolveRequest override prevents Metro from
* choking on node: built-in imports from server-only transitive deps.
*
* @type {import('@react-native/metro-config').MetroConfig}
*/
const config = {
watchFolders: [
path.resolve(monorepoRoot, "packages", "core"),
path.resolve(monorepoRoot, "packages", "shared"),
path.resolve(monorepoRoot, "packages", "react-core"),
path.resolve(monorepoRoot, "packages", "react-native"),
path.resolve(monorepoRoot, "node_modules"),
],
resolver: {
nodeModulesPaths: [
path.resolve(__dirname, "node_modules"),
path.resolve(monorepoRoot, "node_modules"),
],
resolveRequest: (context, moduleName, platform) => {
if (moduleName.startsWith("node:")) {
return { type: "empty" };
}
return context.resolveRequest(context, moduleName, platform);
},
},
};
module.exports = mergeConfig(getDefaultConfig(__dirname), config);