d9f3c6c562
apps/mobile/lib/supabase.ts imports '@chat-app/shared/supabase'. The shared package declares this subpath in its package.json "exports" map. The dev Metro resolver respected it; the eager exporter used by preview/production builds defaulted to legacy resolution and 404'd on the subpath. unstable_enablePackageExports=true makes Metro use Node's modern exports-aware resolver in both modes. Despite the 'unstable_' prefix, it's the recommended setting in Expo SDK 52 monorepos.
28 lines
1.1 KiB
JavaScript
28 lines
1.1 KiB
JavaScript
// Metro config for Expo inside a pnpm monorepo.
|
|
// Key points:
|
|
// - Watch the repo root so workspace packages (@chat-app/shared, db-types) are seen.
|
|
// - Disable hierarchical lookup so Metro uses only the hoisted/workspace node_modules.
|
|
// - Add nodeModulesPaths so symlinked workspace deps resolve.
|
|
|
|
const { getDefaultConfig } = require('expo/metro-config');
|
|
const path = require('path');
|
|
|
|
const projectRoot = __dirname;
|
|
const workspaceRoot = path.resolve(projectRoot, '../..');
|
|
|
|
const config = getDefaultConfig(projectRoot);
|
|
|
|
config.watchFolders = [workspaceRoot];
|
|
config.resolver.nodeModulesPaths = [
|
|
path.resolve(projectRoot, 'node_modules'),
|
|
path.resolve(workspaceRoot, 'node_modules'),
|
|
];
|
|
config.resolver.disableHierarchicalLookup = true;
|
|
// Make Metro honor the "exports" field in package.json. @chat-app/shared
|
|
// maps subpaths like "./supabase" -> "./src/supabase/index.ts" via exports;
|
|
// without this flag the eager bundler (preview/production) ignores them
|
|
// and falls back to legacy main-only resolution, which 404s on subpaths.
|
|
config.resolver.unstable_enablePackageExports = true;
|
|
|
|
module.exports = config;
|