// Metro-konfiguration för pnpm-monorepo (Expo-dokumenterat mönster). const { getDefaultConfig } = require("expo/metro-config"); const path = require("path"); const projectRoot = __dirname; const workspaceRoot = path.resolve(projectRoot, "../.."); const config = getDefaultConfig(projectRoot); // Preserve Expo's default watch folders (project root) and add the workspace // root so that pnpm hoisted workspace packages are resolved (SDK 54 doctor). config.watchFolders = [...(config.watchFolders ?? []), workspaceRoot]; config.resolver.nodeModulesPaths = [ path.resolve(projectRoot, "node_modules"), path.resolve(workspaceRoot, "node_modules"), ]; // SDK 54 Metro does not automatically strip `.js` extensions from relative // ESM imports (our workspace packages use `./foo.js` to point at `.ts` source). // Try the specifier without `.js` first, then fall back to the default resolver. const defaultResolveRequest = config.resolver.resolveRequest; config.resolver.resolveRequest = (context, moduleName, platform) => { if ( (moduleName.startsWith("./") || moduleName.startsWith("../")) && moduleName.endsWith(".js") ) { try { return context.resolveRequest(context, moduleName.slice(0, -3), platform); } catch {} } return (defaultResolveRequest ?? context.resolveRequest)( context, moduleName, platform, ); }; module.exports = config;