const { getDefaultConfig } = require('expo/metro-config') const path = require('path') const projectRoot = __dirname const monorepoRoot = path.resolve(projectRoot, '../..') const config = getDefaultConfig(projectRoot) // 修复 Windows 上 release 构建的路径问题: // RN Gradle 插件在 Windows 上把 entryFile 转为相对于 apps/property-survey 的路径 // (如 ../../node_modules/expo-router/entry.js),但 @expo/metro-config 的 // getDefaultConfig 会把 unstable_serverRoot 设为 monorepo 根目录, // 导致 Metro 从错误的基准解析相对路径。 // 强制 unstable_serverRoot 为 projectRoot,使两者基准一致。 config.server = { ...config.server, unstable_serverRoot: projectRoot, } // 让 Metro 监听 monorepo 根目录,确保根 node_modules 可被解析 config.watchFolders = [monorepoRoot] // 模块解析路径:先查 app 自己的 node_modules,再查 monorepo 根的 node_modules config.resolver.nodeModulesPaths = [ path.resolve(projectRoot, 'node_modules'), path.resolve(monorepoRoot, 'node_modules'), ] // SVG 作为普通资产文件处理(不经过 transformer 编译,避免大文件解析超限) if (!config.resolver.assetExts.includes('svg')) { config.resolver.assetExts.push('svg') } module.exports = config