@reuvenorg/react-native-boilerplate-ultimate
Version:
A powerful CLI tool for creating React Native projects with modular architecture. Generate, manage, and scaffold React Native applications with pre-built modules and best practices.
45 lines (39 loc) • 1.49 kB
JavaScript
const { getDefaultConfig } = require('expo/metro-config');
const { mergeConfig } = require('@react-native/metro-config');
const modules = require('./modules.json');
/**
* Metro configuration
* https://reactnative.dev/docs/metro
*
* @type {import('@react-native/metro-config').MetroConfig}
*/
const config = {
resolver: {
resolverMainFields: ['react-native', 'browser', 'main'],
platforms: ['ios', 'android', 'native', 'web'],
resolveRequest: (context, moduleName, platform) => {
// Only intercept our specific optional modules
const moduleKeys = [...Object.values(modules.screens)];
if (moduleKeys.includes(moduleName)) {
try {
// Try default resolution first
return context.resolveRequest(context, moduleName, platform);
} catch (error) {
// If module not found, return fallback
return {
filePath: require.resolve('./src/screens/not-found-screen.tsx'),
type: 'sourceFile',
};
}
}
// For all other modules, use default Metro resolution
return context.resolveRequest(context, moduleName, platform);
},
},
};
const defaultConfig = getDefaultConfig(__dirname);
// Package exports are enabled by default in RN 0.81.5 / Metro 0.82+
// Removed workaround for RN 0.79.5 compatibility
defaultConfig.resolver.assetExts.push('pte');
defaultConfig.resolver.assetExts.push('bin');
module.exports = mergeConfig(defaultConfig, config);