Some checks failed
CI / Lint & Typecheck (push) Has been cancelled
CI / Test (routes) (push) Has been cancelled
CI / Test (security) (push) Has been cancelled
CI / Test (services) (push) Has been cancelled
CI / Test (unit) (push) Has been cancelled
CI / Test (integration) (push) Has been cancelled
CI / Test Coverage (push) Has been cancelled
CI / Build (push) Has been cancelled
39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
const { getDefaultConfig } = require('expo/metro-config');
|
|
const { withNativewind } = require('nativewind/metro');
|
|
const path = require('path');
|
|
|
|
// Find the project and workspace directories
|
|
const projectRoot = __dirname;
|
|
const monorepoRoot = path.resolve(projectRoot, '../..');
|
|
|
|
const config = getDefaultConfig(projectRoot);
|
|
|
|
// 1. Watch all files within the monorepo (include default watchFolders)
|
|
config.watchFolders = [...(config.watchFolders || []), monorepoRoot];
|
|
|
|
// 2. Let Metro know where to resolve packages from
|
|
config.resolver.nodeModulesPaths = [
|
|
path.resolve(projectRoot, 'node_modules'),
|
|
path.resolve(monorepoRoot, 'node_modules'),
|
|
];
|
|
|
|
// 3. Enable symlink support for pnpm
|
|
config.resolver.unstable_enableSymlinks = true;
|
|
|
|
// 4. Handle .js imports that should resolve to .ts files (NodeNext compatibility)
|
|
// TypeScript with moduleResolution: NodeNext requires .js extensions in imports
|
|
// even for .ts source files. Metro needs help resolving these correctly.
|
|
config.resolver.resolveRequest = (context, moduleName, platform) => {
|
|
if (moduleName.startsWith('.') && moduleName.endsWith('.js')) {
|
|
const tsModuleName = moduleName.replace(/\.js$/, '.ts');
|
|
try {
|
|
return context.resolveRequest(context, tsModuleName, platform);
|
|
} catch {
|
|
// Fall through to default resolution if .ts doesn't exist
|
|
}
|
|
}
|
|
return context.resolveRequest(context, moduleName, platform);
|
|
};
|
|
|
|
module.exports = withNativewind(config, { input: './global.css' });
|