123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = load;
- exports.getDefaultConfig = void 0;
- function _path() {
- const data = _interopRequireDefault(require("path"));
- _path = function () {
- return data;
- };
- return data;
- }
- function _metroConfig() {
- const data = require("metro-config");
- _metroConfig = function () {
- return data;
- };
- return data;
- }
- var _metroPlatformResolver = require("./metroPlatformResolver");
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- /**
- * Configuration file of Metro.
- */
- // @ts-ignore - no typed definition for the package
- const INTERNAL_CALLSITES_REGEX = new RegExp(['/Libraries/Renderer/implementations/.+\\.js$', '/Libraries/BatchedBridge/MessageQueue\\.js$', '/Libraries/YellowBox/.+\\.js$', '/Libraries/LogBox/.+\\.js$', '/Libraries/Core/Timers/.+\\.js$', '/node_modules/react-devtools-core/.+\\.js$', '/node_modules/react-refresh/.+\\.js$', '/node_modules/scheduler/.+\\.js$'].join('|'));
- /**
- * Default configuration
- */
- const getDefaultConfig = ctx => {
- const outOfTreePlatforms = Object.keys(ctx.platforms).filter(platform => ctx.platforms[platform].npmPackageName);
- return {
- resolver: {
- resolveRequest: outOfTreePlatforms.length === 0 ? undefined : (0, _metroPlatformResolver.reactNativePlatformResolver)(outOfTreePlatforms.reduce((result, platform) => {
- result[platform] = ctx.platforms[platform].npmPackageName;
- return result;
- }, {})),
- resolverMainFields: ['react-native', 'browser', 'main'],
- platforms: [...Object.keys(ctx.platforms), 'native']
- },
- serializer: {
- // We can include multiple copies of InitializeCore here because metro will
- // only add ones that are already part of the bundle
- getModulesRunBeforeMainModule: () => [require.resolve(_path().default.join(ctx.reactNativePath, 'Libraries/Core/InitializeCore')), ...outOfTreePlatforms.map(platform => require.resolve(`${ctx.platforms[platform].npmPackageName}/Libraries/Core/InitializeCore`))],
- getPolyfills: () => require(_path().default.join(ctx.reactNativePath, 'rn-get-polyfills'))()
- },
- server: {
- port: Number(process.env.RCT_METRO_PORT) || 8081
- },
- symbolicator: {
- customizeFrame: frame => {
- const collapse = Boolean(frame.file && INTERNAL_CALLSITES_REGEX.test(frame.file));
- return {
- collapse
- };
- }
- },
- transformer: {
- allowOptionalDependencies: true,
- babelTransformerPath: require.resolve('metro-react-native-babel-transformer'),
- assetRegistryPath: 'react-native/Libraries/Image/AssetRegistry'
- },
- watchFolders: []
- };
- };
- exports.getDefaultConfig = getDefaultConfig;
- /**
- * Loads Metro Config and applies `options` on top of the resolved config.
- *
- * This allows the CLI to always overwrite the file settings.
- */
- function load(ctx, options) {
- const defaultConfig = getDefaultConfig(ctx);
- if (options && options.reporter) {
- defaultConfig.reporter = options.reporter;
- }
- return (0, _metroConfig().loadConfig)({
- cwd: ctx.root,
- ...options
- }, defaultConfig);
- }
- //# sourceMappingURL=loadMetroConfig.js.map
|