BangSo/apps/mobile/metro.config.js

28 lines
1.0 KiB
JavaScript

const { getDefaultConfig } = require("expo/metro-config");
const { resolveTypeScriptSource } = require("./metro-resolver");
const projectRoot = __dirname;
const config = getDefaultConfig(projectRoot);
const defaultResolveRequest = config.resolver.resolveRequest;
const pinned = new Set(["react", "react/jsx-runtime", "react/jsx-dev-runtime", "react-native"]);
function resolveFromApp(moduleName) {
return require.resolve(moduleName, { paths: [projectRoot] });
}
config.resolver.resolveRequest = (context, moduleName, platform) => {
if (pinned.has(moduleName) || moduleName.startsWith("react-native/")) {
try {
return { type: "sourceFile", filePath: resolveFromApp(moduleName) };
} catch {
// Fall through to Metro if this exact subpath is not in the app tree.
}
}
if (defaultResolveRequest) {
return resolveTypeScriptSource(context, moduleName, platform, defaultResolveRequest);
}
return resolveTypeScriptSource(context, moduleName, platform, context.resolveRequest);
};
module.exports = config;