45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
// Metro config für Expo + pnpm Monorepo
|
|
// Quelle: https://docs.expo.dev/guides/monorepos/
|
|
|
|
const { getDefaultConfig } = require('expo/metro-config');
|
|
const { withNativeWind } = require('nativewind/metro');
|
|
const path = require('path');
|
|
|
|
const projectRoot = __dirname;
|
|
const monorepoRoot = path.resolve(projectRoot, '../..');
|
|
|
|
const config = getDefaultConfig(projectRoot);
|
|
|
|
// 1. Watch alle Workspace-Pakete
|
|
config.watchFolders = [monorepoRoot];
|
|
|
|
// 2. Auflösung über Workspace-root + lokale node_modules
|
|
config.resolver.nodeModulesPaths = [
|
|
path.resolve(projectRoot, 'node_modules'),
|
|
path.resolve(monorepoRoot, 'node_modules'),
|
|
];
|
|
|
|
// 3. Symlinks via pnpm
|
|
config.resolver.unstable_enableSymlinks = true;
|
|
config.resolver.unstable_enablePackageExports = true;
|
|
|
|
// 4. .riv (Rive-Animation) als Asset registrieren
|
|
config.resolver.assetExts = [...(config.resolver.assetExts ?? []), 'riv'];
|
|
|
|
// 5. Block .env* files — die sind Shell-Snippets (deploy.sh sourced sie),
|
|
// KEIN JS und sollen niemals von Metro/Babel angefasst werden.
|
|
// Ohne diesen Block kann Metro's File-Watcher (watchFolders=monorepoRoot)
|
|
// sie irrtümlich als Modul transformieren → "Unexpected token (1:0)" auf '#'.
|
|
config.resolver.blockList = [
|
|
...(Array.isArray(config.resolver.blockList)
|
|
? config.resolver.blockList
|
|
: config.resolver.blockList
|
|
? [config.resolver.blockList]
|
|
: []),
|
|
/\.env(\..*)?$/,
|
|
];
|
|
|
|
module.exports = withNativeWind(config, {
|
|
input: './global.css',
|
|
});
|