@expo/metro-config 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/ExpoMetroConfig.js
CHANGED
|
@@ -118,12 +118,13 @@ const INTERNAL_CALLSITES_REGEX = new RegExp(['/Libraries/Renderer/implementation
|
|
|
118
118
|
// we want to omit this method from the stack trace.
|
|
119
119
|
// This is akin to most React tooling.
|
|
120
120
|
'/metro/.*/polyfills/require.js$', // Hide frames related to a fast refresh.
|
|
121
|
-
'/metro/.*/lib/bundle-modules/.+\\.js$', '
|
|
121
|
+
'/metro/.*/lib/bundle-modules/.+\\.js$', 'node_modules/react-native/Libraries/Utilities/HMRClient.js$', 'node_modules/eventemitter3/index.js', 'node_modules/event-target-shim/dist/.+\\.js$', // Ignore the log forwarder used in the expo package.
|
|
122
122
|
'/expo/build/logs/RemoteConsole.js$', // Improve errors thrown by invariant (ex: `Invariant Violation: "main" has not been registered`).
|
|
123
123
|
'node_modules/invariant/.+\\.js$', // Remove babel runtime additions
|
|
124
124
|
'node_modules/regenerator-runtime/.+\\.js$', // Remove react native setImmediate ponyfill
|
|
125
125
|
'node_modules/promise/setimmediate/.+\\.js$', // Babel helpers that implement language features
|
|
126
|
-
'node_modules/@babel/runtime/.+\\.js$', //
|
|
126
|
+
'node_modules/@babel/runtime/.+\\.js$', // Hide Hermes internal bytecode
|
|
127
|
+
'/InternalBytecode/InternalBytecode\\.js$', // Block native code invocations
|
|
127
128
|
`\\[native code\\]`].join('|'));
|
|
128
129
|
exports.INTERNAL_CALLSITES_REGEX = INTERNAL_CALLSITES_REGEX;
|
|
129
130
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoMetroConfig.js","names":["EXPO_DEBUG","boolish","EXPO_USE_EXOTIC","INTERNAL_CALLSITES_REGEX","RegExp","join","isUrl","value","URL","readIsLegacyImportsEnabled","projectRoot","config","getConfig","skipSDKVersionRequirement","isLegacyImportsEnabled","exp","getProjectBabelConfigFile","resolveFrom","silent","getAssetPlugins","assetPlugins","hashAssetFilesPath","push","hasWarnedAboutExotic","getDefaultConfig","options","isExotic","mode","console","log","chalk","gray","bold","MetroConfig","importMetroConfigFromProject","reactNativePath","path","dirname","babelPresetFbjsPath","process","env","EXPO_METRO_CACHE_KEY_VERSION","String","require","version","isLegacy","target","warn","yellow","EXPO_TARGET","error","getDefaultTarget","Error","JSON","stringify","default","sourceExtsConfig","isTS","isReact","isModern","sourceExts","getBareExtensions","getManagedExtensions","babelConfigPath","isCustomBabelConfigDefined","resolverMainFields","watchFolders","getWatchFolders","nodeModulesPaths","getModulesPaths","reporter","metroDefaultValues","getDefaultValues","mergeConfig","resolver","platforms","assetExts","filter","assetExt","includes","serializer","getModulesRunBeforeMainModule","resolve","getPolyfills","server","port","Number","RCT_METRO_PORT","symbolicator","customizeFrame","frame","file","lineNumber","column","collapse","Boolean","test","methodName","match","transformer","unstable_allowRequireContext","allowOptionalDependencies","babelTransformerPath","assetRegistryPath","loadAsync","metroOptions","defaultConfig","loadConfig","cwd"],"sources":["../src/ExpoMetroConfig.ts"],"sourcesContent":["// Copyright 2021-present 650 Industries (Expo). All rights reserved.\n\nimport { getConfig, getDefaultTarget, isLegacyImportsEnabled, ProjectTarget } from '@expo/config';\nimport { getBareExtensions, getManagedExtensions } from '@expo/config/paths';\nimport chalk from 'chalk';\nimport { boolish } from 'getenv';\nimport { Reporter } from 'metro';\nimport type MetroConfig from 'metro-config';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport { URL } from 'url';\n\nimport { getModulesPaths } from './getModulesPaths';\nimport { getWatchFolders } from './getWatchFolders';\nimport { importMetroConfigFromProject } from './importMetroFromProject';\n\nexport const EXPO_DEBUG = boolish('EXPO_DEBUG', false);\nconst EXPO_USE_EXOTIC = boolish('EXPO_USE_EXOTIC', false);\n\n// Import only the types here, the values will be imported from the project, at runtime.\nexport const INTERNAL_CALLSITES_REGEX = new RegExp(\n [\n '/Libraries/Renderer/implementations/.+\\\\.js$',\n '/Libraries/BatchedBridge/MessageQueue\\\\.js$',\n '/Libraries/YellowBox/.+\\\\.js$',\n '/Libraries/LogBox/.+\\\\.js$',\n '/Libraries/Core/Timers/.+\\\\.js$',\n 'node_modules/react-devtools-core/.+\\\\.js$',\n 'node_modules/react-refresh/.+\\\\.js$',\n 'node_modules/scheduler/.+\\\\.js$',\n // Metro replaces `require()` with a different method,\n // we want to omit this method from the stack trace.\n // This is akin to most React tooling.\n '/metro/.*/polyfills/require.js$',\n // Hide frames related to a fast refresh.\n '/metro/.*/lib/bundle-modules/.+\\\\.js$',\n '/metro/.*/lib/bundle-modules/.+\\\\.js$',\n 'node_modules/react-native/Libraries/Utilities/HMRClient.js$',\n 'node_modules/eventemitter3/index.js',\n 'node_modules/event-target-shim/dist/.+\\\\.js$',\n // Ignore the log forwarder used in the expo package.\n '/expo/build/logs/RemoteConsole.js$',\n // Improve errors thrown by invariant (ex: `Invariant Violation: \"main\" has not been registered`).\n 'node_modules/invariant/.+\\\\.js$',\n // Remove babel runtime additions\n 'node_modules/regenerator-runtime/.+\\\\.js$',\n // Remove react native setImmediate ponyfill\n 'node_modules/promise/setimmediate/.+\\\\.js$',\n // Babel helpers that implement language features\n 'node_modules/@babel/runtime/.+\\\\.js$',\n // Block native code invocations\n `\\\\[native code\\\\]`,\n ].join('|')\n);\n\nfunction isUrl(value: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nexport interface DefaultConfigOptions {\n target?: ProjectTarget;\n mode?: 'exotic';\n}\n\nfunction readIsLegacyImportsEnabled(projectRoot: string): boolean {\n const config = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n return isLegacyImportsEnabled(config.exp);\n}\n\nfunction getProjectBabelConfigFile(projectRoot: string): string | undefined {\n return (\n resolveFrom.silent(projectRoot, './babel.config.js') ||\n resolveFrom.silent(projectRoot, './.babelrc') ||\n resolveFrom.silent(projectRoot, './.babelrc.js')\n );\n}\n\nfunction getAssetPlugins(projectRoot: string): string[] {\n const assetPlugins: string[] = [];\n\n let hashAssetFilesPath;\n try {\n hashAssetFilesPath = resolveFrom(projectRoot, 'expo-asset/tools/hashAssetFiles');\n } catch {\n // TODO: we should warn/throw an error if the user has expo-updates installed but does not\n // have hashAssetFiles available, or if the user is in managed workflow and does not have\n // hashAssetFiles available. but in a bare app w/o expo-updates, just using dev-client,\n // it is not needed\n }\n\n if (hashAssetFilesPath) {\n assetPlugins.push(hashAssetFilesPath);\n }\n\n return assetPlugins;\n}\n\nlet hasWarnedAboutExotic = false;\n\nexport function getDefaultConfig(\n projectRoot: string,\n options: DefaultConfigOptions = {}\n): MetroConfig.InputConfigT {\n const isExotic = options.mode === 'exotic' || EXPO_USE_EXOTIC;\n\n if (isExotic && !hasWarnedAboutExotic) {\n hasWarnedAboutExotic = true;\n console.log(\n chalk.gray(\n `\\u203A Unstable feature ${chalk.bold`EXPO_USE_EXOTIC`} is enabled. Bundling may not work as expected, and is subject to breaking changes.`\n )\n );\n }\n const MetroConfig = importMetroConfigFromProject(projectRoot);\n\n const reactNativePath = path.dirname(resolveFrom(projectRoot, 'react-native/package.json'));\n\n try {\n // Set the `EXPO_METRO_CACHE_KEY_VERSION` variable for use in the custom babel transformer.\n // This hack is used because there doesn't appear to be anyway to resolve\n // `babel-preset-fbjs` relative to the project root later (in `metro-expo-babel-transformer`).\n const babelPresetFbjsPath = resolveFrom(projectRoot, 'babel-preset-fbjs/package.json');\n process.env.EXPO_METRO_CACHE_KEY_VERSION = String(require(babelPresetFbjsPath).version);\n } catch {\n // noop -- falls back to a hardcoded value.\n }\n\n const isLegacy = readIsLegacyImportsEnabled(projectRoot);\n // Deprecated -- SDK 41 --\n if (options.target) {\n if (!isLegacy) {\n console.warn(\n chalk.yellow(\n `The target option is deprecated. Learn more: http://expo.fyi/expo-extension-migration`\n )\n );\n delete options.target;\n }\n } else if (process.env.EXPO_TARGET) {\n console.error(\n 'EXPO_TARGET is deprecated. Learn more: http://expo.fyi/expo-extension-migration'\n );\n if (isLegacy) {\n // EXPO_TARGET is used by @expo/metro-config to determine the target when getDefaultConfig is\n // called from metro.config.js.\n // @ts-ignore\n options.target = process.env.EXPO_TARGET;\n }\n } else if (isLegacy) {\n // Fall back to guessing based on the project structure in legacy mode.\n options.target = getDefaultTarget(projectRoot);\n }\n\n if (!options.target) {\n // Default to bare -- no .expo extension.\n options.target = 'bare';\n }\n // End deprecated -- SDK 41 --\n\n const { target } = options;\n if (!(target === 'managed' || target === 'bare')) {\n throw new Error(\n `Invalid target: '${target}'. Debug info: \\n${JSON.stringify(\n {\n 'options.target': options.target,\n default: getDefaultTarget(projectRoot),\n },\n null,\n 2\n )}`\n );\n }\n const sourceExtsConfig = { isTS: true, isReact: true, isModern: false };\n const sourceExts =\n target === 'bare'\n ? getBareExtensions([], sourceExtsConfig)\n : getManagedExtensions([], sourceExtsConfig);\n\n if (isExotic) {\n // Add support for cjs (without platform extensions).\n sourceExts.push('cjs');\n }\n\n const babelConfigPath = getProjectBabelConfigFile(projectRoot);\n const isCustomBabelConfigDefined = !!babelConfigPath;\n\n const resolverMainFields: string[] = [];\n\n // Disable `react-native` in exotic mode, since library authors\n // use it to ship raw application code to the project.\n if (!isExotic) {\n resolverMainFields.push('react-native');\n }\n resolverMainFields.push('browser', 'main');\n\n const watchFolders = getWatchFolders(projectRoot);\n // TODO: nodeModulesPaths does not work with the new Node.js package.json exports API, this causes packages like uuid to fail. Disabling for now.\n const nodeModulesPaths = getModulesPaths(projectRoot);\n if (EXPO_DEBUG) {\n console.log();\n console.log(`Expo Metro config:`);\n try {\n console.log(`- Version: ${require('../package.json').version}`);\n } catch {}\n console.log(`- Bundler target: ${target}`);\n console.log(`- Legacy: ${isLegacy}`);\n console.log(`- Extensions: ${sourceExts.join(', ')}`);\n console.log(`- React Native: ${reactNativePath}`);\n console.log(`- Babel config: ${babelConfigPath || 'babel-preset-expo (default)'}`);\n console.log(`- Resolver Fields: ${resolverMainFields.join(', ')}`);\n console.log(`- Watch Folders: ${watchFolders.join(', ')}`);\n console.log(`- Node Module Paths: ${nodeModulesPaths.join(', ')}`);\n console.log(`- Exotic: ${isExotic}`);\n console.log();\n }\n const {\n // Remove the default reporter which metro always resolves to be the react-native-community/cli reporter.\n // This prints a giant React logo which is less accessible to users on smaller terminals.\n reporter,\n ...metroDefaultValues\n } = MetroConfig.getDefaultConfig.getDefaultValues(projectRoot);\n\n // Merge in the default config from Metro here, even though loadConfig uses it as defaults.\n // This is a convenience for getDefaultConfig use in metro.config.js, e.g. to modify assetExts.\n return MetroConfig.mergeConfig(metroDefaultValues, {\n watchFolders,\n resolver: {\n resolverMainFields,\n platforms: ['ios', 'android', 'native', 'testing'],\n assetExts: metroDefaultValues.resolver.assetExts.filter(\n (assetExt) => !sourceExts.includes(assetExt)\n ),\n sourceExts,\n nodeModulesPaths,\n },\n serializer: {\n getModulesRunBeforeMainModule: () => [\n require.resolve(path.join(reactNativePath, 'Libraries/Core/InitializeCore')),\n // TODO: Bacon: load Expo side-effects\n ],\n getPolyfills: () => require(path.join(reactNativePath, 'rn-get-polyfills'))(),\n },\n server: {\n port: Number(process.env.RCT_METRO_PORT) || 8081,\n },\n symbolicator: {\n customizeFrame: (frame) => {\n if (frame.file && isUrl(frame.file)) {\n return {\n ...frame,\n // HACK: This prevents Metro from attempting to read the invalid file URL it sent us.\n lineNumber: null,\n column: null,\n // This prevents the invalid frame from being shown by default.\n collapse: true,\n };\n }\n let collapse = Boolean(frame.file && INTERNAL_CALLSITES_REGEX.test(frame.file));\n\n if (!collapse) {\n // This represents the first frame of the stacktrace.\n // Often this looks like: `__r(0);`.\n // The URL will also be unactionable in the app and therefore not very useful to the developer.\n if (\n frame.column === 3 &&\n frame.methodName === 'global code' &&\n frame.file?.match(/^https?:\\/\\//g)\n ) {\n collapse = true;\n }\n }\n\n return { ...(frame || {}), collapse };\n },\n },\n transformer: {\n // `require.context` support\n unstable_allowRequireContext: true,\n allowOptionalDependencies: true,\n babelTransformerPath: isExotic\n ? require.resolve('./transformer/metro-expo-exotic-babel-transformer')\n : isCustomBabelConfigDefined\n ? // If the user defined a babel config file in their project,\n // then use the default transformer.\n // Try to use the project copy before falling back on the global version\n resolveFrom.silent(projectRoot, 'metro-react-native-babel-transformer')\n : // Otherwise, use a custom transformer that uses `babel-preset-expo` by default for projects.\n require.resolve('./transformer/metro-expo-babel-transformer'),\n assetRegistryPath: 'react-native/Libraries/Image/AssetRegistry',\n assetPlugins: getAssetPlugins(projectRoot),\n },\n });\n}\n\nexport interface LoadOptions {\n config?: string;\n maxWorkers?: number;\n port?: number;\n reporter?: Reporter;\n resetCache?: boolean;\n target?: ProjectTarget;\n}\n\nexport async function loadAsync(\n projectRoot: string,\n { reporter, target, ...metroOptions }: LoadOptions = {}\n): Promise<MetroConfig.ConfigT> {\n let defaultConfig = getDefaultConfig(projectRoot, { target });\n if (reporter) {\n defaultConfig = { ...defaultConfig, reporter };\n }\n const MetroConfig = importMetroConfigFromProject(projectRoot);\n return await MetroConfig.loadConfig(\n { cwd: projectRoot, projectRoot, ...metroOptions },\n defaultConfig\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExpoMetroConfig.js","names":["EXPO_DEBUG","boolish","EXPO_USE_EXOTIC","INTERNAL_CALLSITES_REGEX","RegExp","join","isUrl","value","URL","readIsLegacyImportsEnabled","projectRoot","config","getConfig","skipSDKVersionRequirement","isLegacyImportsEnabled","exp","getProjectBabelConfigFile","resolveFrom","silent","getAssetPlugins","assetPlugins","hashAssetFilesPath","push","hasWarnedAboutExotic","getDefaultConfig","options","isExotic","mode","console","log","chalk","gray","bold","MetroConfig","importMetroConfigFromProject","reactNativePath","path","dirname","babelPresetFbjsPath","process","env","EXPO_METRO_CACHE_KEY_VERSION","String","require","version","isLegacy","target","warn","yellow","EXPO_TARGET","error","getDefaultTarget","Error","JSON","stringify","default","sourceExtsConfig","isTS","isReact","isModern","sourceExts","getBareExtensions","getManagedExtensions","babelConfigPath","isCustomBabelConfigDefined","resolverMainFields","watchFolders","getWatchFolders","nodeModulesPaths","getModulesPaths","reporter","metroDefaultValues","getDefaultValues","mergeConfig","resolver","platforms","assetExts","filter","assetExt","includes","serializer","getModulesRunBeforeMainModule","resolve","getPolyfills","server","port","Number","RCT_METRO_PORT","symbolicator","customizeFrame","frame","file","lineNumber","column","collapse","Boolean","test","methodName","match","transformer","unstable_allowRequireContext","allowOptionalDependencies","babelTransformerPath","assetRegistryPath","loadAsync","metroOptions","defaultConfig","loadConfig","cwd"],"sources":["../src/ExpoMetroConfig.ts"],"sourcesContent":["// Copyright 2021-present 650 Industries (Expo). All rights reserved.\n\nimport { getConfig, getDefaultTarget, isLegacyImportsEnabled, ProjectTarget } from '@expo/config';\nimport { getBareExtensions, getManagedExtensions } from '@expo/config/paths';\nimport chalk from 'chalk';\nimport { boolish } from 'getenv';\nimport { Reporter } from 'metro';\nimport type MetroConfig from 'metro-config';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport { URL } from 'url';\n\nimport { getModulesPaths } from './getModulesPaths';\nimport { getWatchFolders } from './getWatchFolders';\nimport { importMetroConfigFromProject } from './importMetroFromProject';\n\nexport const EXPO_DEBUG = boolish('EXPO_DEBUG', false);\nconst EXPO_USE_EXOTIC = boolish('EXPO_USE_EXOTIC', false);\n\n// Import only the types here, the values will be imported from the project, at runtime.\nexport const INTERNAL_CALLSITES_REGEX = new RegExp(\n [\n '/Libraries/Renderer/implementations/.+\\\\.js$',\n '/Libraries/BatchedBridge/MessageQueue\\\\.js$',\n '/Libraries/YellowBox/.+\\\\.js$',\n '/Libraries/LogBox/.+\\\\.js$',\n '/Libraries/Core/Timers/.+\\\\.js$',\n 'node_modules/react-devtools-core/.+\\\\.js$',\n 'node_modules/react-refresh/.+\\\\.js$',\n 'node_modules/scheduler/.+\\\\.js$',\n // Metro replaces `require()` with a different method,\n // we want to omit this method from the stack trace.\n // This is akin to most React tooling.\n '/metro/.*/polyfills/require.js$',\n // Hide frames related to a fast refresh.\n '/metro/.*/lib/bundle-modules/.+\\\\.js$',\n 'node_modules/react-native/Libraries/Utilities/HMRClient.js$',\n 'node_modules/eventemitter3/index.js',\n 'node_modules/event-target-shim/dist/.+\\\\.js$',\n // Ignore the log forwarder used in the expo package.\n '/expo/build/logs/RemoteConsole.js$',\n // Improve errors thrown by invariant (ex: `Invariant Violation: \"main\" has not been registered`).\n 'node_modules/invariant/.+\\\\.js$',\n // Remove babel runtime additions\n 'node_modules/regenerator-runtime/.+\\\\.js$',\n // Remove react native setImmediate ponyfill\n 'node_modules/promise/setimmediate/.+\\\\.js$',\n // Babel helpers that implement language features\n 'node_modules/@babel/runtime/.+\\\\.js$',\n // Hide Hermes internal bytecode\n '/InternalBytecode/InternalBytecode\\\\.js$',\n // Block native code invocations\n `\\\\[native code\\\\]`,\n ].join('|')\n);\n\nfunction isUrl(value: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nexport interface DefaultConfigOptions {\n target?: ProjectTarget;\n mode?: 'exotic';\n}\n\nfunction readIsLegacyImportsEnabled(projectRoot: string): boolean {\n const config = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n return isLegacyImportsEnabled(config.exp);\n}\n\nfunction getProjectBabelConfigFile(projectRoot: string): string | undefined {\n return (\n resolveFrom.silent(projectRoot, './babel.config.js') ||\n resolveFrom.silent(projectRoot, './.babelrc') ||\n resolveFrom.silent(projectRoot, './.babelrc.js')\n );\n}\n\nfunction getAssetPlugins(projectRoot: string): string[] {\n const assetPlugins: string[] = [];\n\n let hashAssetFilesPath;\n try {\n hashAssetFilesPath = resolveFrom(projectRoot, 'expo-asset/tools/hashAssetFiles');\n } catch {\n // TODO: we should warn/throw an error if the user has expo-updates installed but does not\n // have hashAssetFiles available, or if the user is in managed workflow and does not have\n // hashAssetFiles available. but in a bare app w/o expo-updates, just using dev-client,\n // it is not needed\n }\n\n if (hashAssetFilesPath) {\n assetPlugins.push(hashAssetFilesPath);\n }\n\n return assetPlugins;\n}\n\nlet hasWarnedAboutExotic = false;\n\nexport function getDefaultConfig(\n projectRoot: string,\n options: DefaultConfigOptions = {}\n): MetroConfig.InputConfigT {\n const isExotic = options.mode === 'exotic' || EXPO_USE_EXOTIC;\n\n if (isExotic && !hasWarnedAboutExotic) {\n hasWarnedAboutExotic = true;\n console.log(\n chalk.gray(\n `\\u203A Unstable feature ${chalk.bold`EXPO_USE_EXOTIC`} is enabled. Bundling may not work as expected, and is subject to breaking changes.`\n )\n );\n }\n const MetroConfig = importMetroConfigFromProject(projectRoot);\n\n const reactNativePath = path.dirname(resolveFrom(projectRoot, 'react-native/package.json'));\n\n try {\n // Set the `EXPO_METRO_CACHE_KEY_VERSION` variable for use in the custom babel transformer.\n // This hack is used because there doesn't appear to be anyway to resolve\n // `babel-preset-fbjs` relative to the project root later (in `metro-expo-babel-transformer`).\n const babelPresetFbjsPath = resolveFrom(projectRoot, 'babel-preset-fbjs/package.json');\n process.env.EXPO_METRO_CACHE_KEY_VERSION = String(require(babelPresetFbjsPath).version);\n } catch {\n // noop -- falls back to a hardcoded value.\n }\n\n const isLegacy = readIsLegacyImportsEnabled(projectRoot);\n // Deprecated -- SDK 41 --\n if (options.target) {\n if (!isLegacy) {\n console.warn(\n chalk.yellow(\n `The target option is deprecated. Learn more: http://expo.fyi/expo-extension-migration`\n )\n );\n delete options.target;\n }\n } else if (process.env.EXPO_TARGET) {\n console.error(\n 'EXPO_TARGET is deprecated. Learn more: http://expo.fyi/expo-extension-migration'\n );\n if (isLegacy) {\n // EXPO_TARGET is used by @expo/metro-config to determine the target when getDefaultConfig is\n // called from metro.config.js.\n // @ts-ignore\n options.target = process.env.EXPO_TARGET;\n }\n } else if (isLegacy) {\n // Fall back to guessing based on the project structure in legacy mode.\n options.target = getDefaultTarget(projectRoot);\n }\n\n if (!options.target) {\n // Default to bare -- no .expo extension.\n options.target = 'bare';\n }\n // End deprecated -- SDK 41 --\n\n const { target } = options;\n if (!(target === 'managed' || target === 'bare')) {\n throw new Error(\n `Invalid target: '${target}'. Debug info: \\n${JSON.stringify(\n {\n 'options.target': options.target,\n default: getDefaultTarget(projectRoot),\n },\n null,\n 2\n )}`\n );\n }\n const sourceExtsConfig = { isTS: true, isReact: true, isModern: false };\n const sourceExts =\n target === 'bare'\n ? getBareExtensions([], sourceExtsConfig)\n : getManagedExtensions([], sourceExtsConfig);\n\n if (isExotic) {\n // Add support for cjs (without platform extensions).\n sourceExts.push('cjs');\n }\n\n const babelConfigPath = getProjectBabelConfigFile(projectRoot);\n const isCustomBabelConfigDefined = !!babelConfigPath;\n\n const resolverMainFields: string[] = [];\n\n // Disable `react-native` in exotic mode, since library authors\n // use it to ship raw application code to the project.\n if (!isExotic) {\n resolverMainFields.push('react-native');\n }\n resolverMainFields.push('browser', 'main');\n\n const watchFolders = getWatchFolders(projectRoot);\n // TODO: nodeModulesPaths does not work with the new Node.js package.json exports API, this causes packages like uuid to fail. Disabling for now.\n const nodeModulesPaths = getModulesPaths(projectRoot);\n if (EXPO_DEBUG) {\n console.log();\n console.log(`Expo Metro config:`);\n try {\n console.log(`- Version: ${require('../package.json').version}`);\n } catch {}\n console.log(`- Bundler target: ${target}`);\n console.log(`- Legacy: ${isLegacy}`);\n console.log(`- Extensions: ${sourceExts.join(', ')}`);\n console.log(`- React Native: ${reactNativePath}`);\n console.log(`- Babel config: ${babelConfigPath || 'babel-preset-expo (default)'}`);\n console.log(`- Resolver Fields: ${resolverMainFields.join(', ')}`);\n console.log(`- Watch Folders: ${watchFolders.join(', ')}`);\n console.log(`- Node Module Paths: ${nodeModulesPaths.join(', ')}`);\n console.log(`- Exotic: ${isExotic}`);\n console.log();\n }\n const {\n // Remove the default reporter which metro always resolves to be the react-native-community/cli reporter.\n // This prints a giant React logo which is less accessible to users on smaller terminals.\n reporter,\n ...metroDefaultValues\n } = MetroConfig.getDefaultConfig.getDefaultValues(projectRoot);\n\n // Merge in the default config from Metro here, even though loadConfig uses it as defaults.\n // This is a convenience for getDefaultConfig use in metro.config.js, e.g. to modify assetExts.\n return MetroConfig.mergeConfig(metroDefaultValues, {\n watchFolders,\n resolver: {\n resolverMainFields,\n platforms: ['ios', 'android', 'native', 'testing'],\n assetExts: metroDefaultValues.resolver.assetExts.filter(\n (assetExt) => !sourceExts.includes(assetExt)\n ),\n sourceExts,\n nodeModulesPaths,\n },\n serializer: {\n getModulesRunBeforeMainModule: () => [\n require.resolve(path.join(reactNativePath, 'Libraries/Core/InitializeCore')),\n // TODO: Bacon: load Expo side-effects\n ],\n getPolyfills: () => require(path.join(reactNativePath, 'rn-get-polyfills'))(),\n },\n server: {\n port: Number(process.env.RCT_METRO_PORT) || 8081,\n },\n symbolicator: {\n customizeFrame: (frame) => {\n if (frame.file && isUrl(frame.file)) {\n return {\n ...frame,\n // HACK: This prevents Metro from attempting to read the invalid file URL it sent us.\n lineNumber: null,\n column: null,\n // This prevents the invalid frame from being shown by default.\n collapse: true,\n };\n }\n let collapse = Boolean(frame.file && INTERNAL_CALLSITES_REGEX.test(frame.file));\n\n if (!collapse) {\n // This represents the first frame of the stacktrace.\n // Often this looks like: `__r(0);`.\n // The URL will also be unactionable in the app and therefore not very useful to the developer.\n if (\n frame.column === 3 &&\n frame.methodName === 'global code' &&\n frame.file?.match(/^https?:\\/\\//g)\n ) {\n collapse = true;\n }\n }\n\n return { ...(frame || {}), collapse };\n },\n },\n transformer: {\n // `require.context` support\n unstable_allowRequireContext: true,\n allowOptionalDependencies: true,\n babelTransformerPath: isExotic\n ? require.resolve('./transformer/metro-expo-exotic-babel-transformer')\n : isCustomBabelConfigDefined\n ? // If the user defined a babel config file in their project,\n // then use the default transformer.\n // Try to use the project copy before falling back on the global version\n resolveFrom.silent(projectRoot, 'metro-react-native-babel-transformer')\n : // Otherwise, use a custom transformer that uses `babel-preset-expo` by default for projects.\n require.resolve('./transformer/metro-expo-babel-transformer'),\n assetRegistryPath: 'react-native/Libraries/Image/AssetRegistry',\n assetPlugins: getAssetPlugins(projectRoot),\n },\n });\n}\n\nexport interface LoadOptions {\n config?: string;\n maxWorkers?: number;\n port?: number;\n reporter?: Reporter;\n resetCache?: boolean;\n target?: ProjectTarget;\n}\n\nexport async function loadAsync(\n projectRoot: string,\n { reporter, target, ...metroOptions }: LoadOptions = {}\n): Promise<MetroConfig.ConfigT> {\n let defaultConfig = getDefaultConfig(projectRoot, { target });\n if (reporter) {\n defaultConfig = { ...defaultConfig, reporter };\n }\n const MetroConfig = importMetroConfigFromProject(projectRoot);\n return await MetroConfig.loadConfig(\n { cwd: projectRoot, projectRoot, ...metroOptions },\n defaultConfig\n );\n}\n"],"mappings":";;;;;;;;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;AAdA;AAgBO,MAAMA,UAAU,GAAG,IAAAC,iBAAA,EAAQ,YAAR,EAAsB,KAAtB,CAAnB;;AACP,MAAMC,eAAe,GAAG,IAAAD,iBAAA,EAAQ,iBAAR,EAA2B,KAA3B,CAAxB,C,CAEA;;AACO,MAAME,wBAAwB,GAAG,IAAIC,MAAJ,CACtC,CACE,8CADF,EAEE,6CAFF,EAGE,+BAHF,EAIE,4BAJF,EAKE,iCALF,EAME,2CANF,EAOE,qCAPF,EAQE,iCARF,EASE;AACA;AACA;AACA,iCAZF,EAaE;AACA,uCAdF,EAeE,6DAfF,EAgBE,qCAhBF,EAiBE,8CAjBF,EAkBE;AACA,oCAnBF,EAoBE;AACA,iCArBF,EAsBE;AACA,2CAvBF,EAwBE;AACA,4CAzBF,EA0BE;AACA,sCA3BF,EA4BE;AACA,0CA7BF,EA8BE;AACC,mBA/BH,EAgCEC,IAhCF,CAgCO,GAhCP,CADsC,CAAjC;;;AAoCP,SAASC,KAAT,CAAeC,KAAf,EAAuC;EACrC,IAAI;IACF;IACA,KAAIC,UAAJ,EAAQD,KAAR;IACA,OAAO,IAAP;EACD,CAJD,CAIE,MAAM;IACN,OAAO,KAAP;EACD;AACF;;AAOD,SAASE,0BAAT,CAAoCC,WAApC,EAAkE;EAChE,MAAMC,MAAM,GAAG,IAAAC,mBAAA,EAAUF,WAAV,EAAuB;IAAEG,yBAAyB,EAAE;EAA7B,CAAvB,CAAf;EACA,OAAO,IAAAC,gCAAA,EAAuBH,MAAM,CAACI,GAA9B,CAAP;AACD;;AAED,SAASC,yBAAT,CAAmCN,WAAnC,EAA4E;EAC1E,OACEO,sBAAA,CAAYC,MAAZ,CAAmBR,WAAnB,EAAgC,mBAAhC,KACAO,sBAAA,CAAYC,MAAZ,CAAmBR,WAAnB,EAAgC,YAAhC,CADA,IAEAO,sBAAA,CAAYC,MAAZ,CAAmBR,WAAnB,EAAgC,eAAhC,CAHF;AAKD;;AAED,SAASS,eAAT,CAAyBT,WAAzB,EAAwD;EACtD,MAAMU,YAAsB,GAAG,EAA/B;EAEA,IAAIC,kBAAJ;;EACA,IAAI;IACFA,kBAAkB,GAAG,IAAAJ,sBAAA,EAAYP,WAAZ,EAAyB,iCAAzB,CAArB;EACD,CAFD,CAEE,MAAM,CACN;IACA;IACA;IACA;EACD;;EAED,IAAIW,kBAAJ,EAAwB;IACtBD,YAAY,CAACE,IAAb,CAAkBD,kBAAlB;EACD;;EAED,OAAOD,YAAP;AACD;;AAED,IAAIG,oBAAoB,GAAG,KAA3B;;AAEO,SAASC,gBAAT,CACLd,WADK,EAELe,OAA6B,GAAG,EAF3B,EAGqB;EAC1B,MAAMC,QAAQ,GAAGD,OAAO,CAACE,IAAR,KAAiB,QAAjB,IAA6BzB,eAA9C;;EAEA,IAAIwB,QAAQ,IAAI,CAACH,oBAAjB,EAAuC;IACrCA,oBAAoB,GAAG,IAAvB;IACAK,OAAO,CAACC,GAAR,CACEC,gBAAA,CAAMC,IAAN,CACG,2BAA0BD,gBAAA,CAAME,IAAK,iBAAiB,qFADzD,CADF;EAKD;;EACD,MAAMC,WAAW,GAAG,IAAAC,sDAAA,EAA6BxB,WAA7B,CAApB;;EAEA,MAAMyB,eAAe,GAAGC,eAAA,CAAKC,OAAL,CAAa,IAAApB,sBAAA,EAAYP,WAAZ,EAAyB,2BAAzB,CAAb,CAAxB;;EAEA,IAAI;IACF;IACA;IACA;IACA,MAAM4B,mBAAmB,GAAG,IAAArB,sBAAA,EAAYP,WAAZ,EAAyB,gCAAzB,CAA5B;IACA6B,OAAO,CAACC,GAAR,CAAYC,4BAAZ,GAA2CC,MAAM,CAACC,OAAO,CAACL,mBAAD,CAAP,CAA6BM,OAA9B,CAAjD;EACD,CAND,CAME,MAAM,CACN;EACD;;EAED,MAAMC,QAAQ,GAAGpC,0BAA0B,CAACC,WAAD,CAA3C,CAzB0B,CA0B1B;;EACA,IAAIe,OAAO,CAACqB,MAAZ,EAAoB;IAClB,IAAI,CAACD,QAAL,EAAe;MACbjB,OAAO,CAACmB,IAAR,CACEjB,gBAAA,CAAMkB,MAAN,CACG,uFADH,CADF;MAKA,OAAOvB,OAAO,CAACqB,MAAf;IACD;EACF,CATD,MASO,IAAIP,OAAO,CAACC,GAAR,CAAYS,WAAhB,EAA6B;IAClCrB,OAAO,CAACsB,KAAR,CACE,iFADF;;IAGA,IAAIL,QAAJ,EAAc;MACZ;MACA;MACA;MACApB,OAAO,CAACqB,MAAR,GAAiBP,OAAO,CAACC,GAAR,CAAYS,WAA7B;IACD;EACF,CAVM,MAUA,IAAIJ,QAAJ,EAAc;IACnB;IACApB,OAAO,CAACqB,MAAR,GAAiB,IAAAK,0BAAA,EAAiBzC,WAAjB,CAAjB;EACD;;EAED,IAAI,CAACe,OAAO,CAACqB,MAAb,EAAqB;IACnB;IACArB,OAAO,CAACqB,MAAR,GAAiB,MAAjB;EACD,CAtDyB,CAuD1B;;;EAEA,MAAM;IAAEA;EAAF,IAAarB,OAAnB;;EACA,IAAI,EAAEqB,MAAM,KAAK,SAAX,IAAwBA,MAAM,KAAK,MAArC,CAAJ,EAAkD;IAChD,MAAM,IAAIM,KAAJ,CACH,oBAAmBN,MAAO,oBAAmBO,IAAI,CAACC,SAAL,CAC5C;MACE,kBAAkB7B,OAAO,CAACqB,MAD5B;MAEES,OAAO,EAAE,IAAAJ,0BAAA,EAAiBzC,WAAjB;IAFX,CAD4C,EAK5C,IAL4C,EAM5C,CAN4C,CAO5C,EARE,CAAN;EAUD;;EACD,MAAM8C,gBAAgB,GAAG;IAAEC,IAAI,EAAE,IAAR;IAAcC,OAAO,EAAE,IAAvB;IAA6BC,QAAQ,EAAE;EAAvC,CAAzB;EACA,MAAMC,UAAU,GACdd,MAAM,KAAK,MAAX,GACI,IAAAe,0BAAA,EAAkB,EAAlB,EAAsBL,gBAAtB,CADJ,GAEI,IAAAM,6BAAA,EAAqB,EAArB,EAAyBN,gBAAzB,CAHN;;EAKA,IAAI9B,QAAJ,EAAc;IACZ;IACAkC,UAAU,CAACtC,IAAX,CAAgB,KAAhB;EACD;;EAED,MAAMyC,eAAe,GAAG/C,yBAAyB,CAACN,WAAD,CAAjD;EACA,MAAMsD,0BAA0B,GAAG,CAAC,CAACD,eAArC;EAEA,MAAME,kBAA4B,GAAG,EAArC,CApF0B,CAsF1B;EACA;;EACA,IAAI,CAACvC,QAAL,EAAe;IACbuC,kBAAkB,CAAC3C,IAAnB,CAAwB,cAAxB;EACD;;EACD2C,kBAAkB,CAAC3C,IAAnB,CAAwB,SAAxB,EAAmC,MAAnC;EAEA,MAAM4C,YAAY,GAAG,IAAAC,kCAAA,EAAgBzD,WAAhB,CAArB,CA7F0B,CA8F1B;;EACA,MAAM0D,gBAAgB,GAAG,IAAAC,kCAAA,EAAgB3D,WAAhB,CAAzB;;EACA,IAAIV,UAAJ,EAAgB;IACd4B,OAAO,CAACC,GAAR;IACAD,OAAO,CAACC,GAAR,CAAa,oBAAb;;IACA,IAAI;MACFD,OAAO,CAACC,GAAR,CAAa,cAAac,OAAO,CAAC,iBAAD,CAAP,CAA2BC,OAAQ,EAA7D;IACD,CAFD,CAEE,MAAM,CAAE;;IACVhB,OAAO,CAACC,GAAR,CAAa,qBAAoBiB,MAAO,EAAxC;IACAlB,OAAO,CAACC,GAAR,CAAa,aAAYgB,QAAS,EAAlC;IACAjB,OAAO,CAACC,GAAR,CAAa,iBAAgB+B,UAAU,CAACvD,IAAX,CAAgB,IAAhB,CAAsB,EAAnD;IACAuB,OAAO,CAACC,GAAR,CAAa,mBAAkBM,eAAgB,EAA/C;IACAP,OAAO,CAACC,GAAR,CAAa,mBAAkBkC,eAAe,IAAI,6BAA8B,EAAhF;IACAnC,OAAO,CAACC,GAAR,CAAa,sBAAqBoC,kBAAkB,CAAC5D,IAAnB,CAAwB,IAAxB,CAA8B,EAAhE;IACAuB,OAAO,CAACC,GAAR,CAAa,oBAAmBqC,YAAY,CAAC7D,IAAb,CAAkB,IAAlB,CAAwB,EAAxD;IACAuB,OAAO,CAACC,GAAR,CAAa,wBAAuBuC,gBAAgB,CAAC/D,IAAjB,CAAsB,IAAtB,CAA4B,EAAhE;IACAuB,OAAO,CAACC,GAAR,CAAa,aAAYH,QAAS,EAAlC;IACAE,OAAO,CAACC,GAAR;EACD;;EACD,MAAM;IACJ;IACA;IACAyC,QAHI;IAIJ,GAAGC;EAJC,IAKFtC,WAAW,CAACT,gBAAZ,CAA6BgD,gBAA7B,CAA8C9D,WAA9C,CALJ,CAjH0B,CAwH1B;EACA;;EACA,OAAOuB,WAAW,CAACwC,WAAZ,CAAwBF,kBAAxB,EAA4C;IACjDL,YADiD;IAEjDQ,QAAQ,EAAE;MACRT,kBADQ;MAERU,SAAS,EAAE,CAAC,KAAD,EAAQ,SAAR,EAAmB,QAAnB,EAA6B,SAA7B,CAFH;MAGRC,SAAS,EAAEL,kBAAkB,CAACG,QAAnB,CAA4BE,SAA5B,CAAsCC,MAAtC,CACRC,QAAD,IAAc,CAAClB,UAAU,CAACmB,QAAX,CAAoBD,QAApB,CADN,CAHH;MAMRlB,UANQ;MAORQ;IAPQ,CAFuC;IAWjDY,UAAU,EAAE;MACVC,6BAA6B,EAAE,MAAM,CACnCtC,OAAO,CAACuC,OAAR,CAAgB9C,eAAA,CAAK/B,IAAL,CAAU8B,eAAV,EAA2B,+BAA3B,CAAhB,CADmC,CAEnC;MAFmC,CAD3B;MAKVgD,YAAY,EAAE,MAAMxC,OAAO,CAACP,eAAA,CAAK/B,IAAL,CAAU8B,eAAV,EAA2B,kBAA3B,CAAD,CAAP;IALV,CAXqC;IAkBjDiD,MAAM,EAAE;MACNC,IAAI,EAAEC,MAAM,CAAC/C,OAAO,CAACC,GAAR,CAAY+C,cAAb,CAAN,IAAsC;IADtC,CAlByC;IAqBjDC,YAAY,EAAE;MACZC,cAAc,EAAGC,KAAD,IAAW;QACzB,IAAIA,KAAK,CAACC,IAAN,IAAcrF,KAAK,CAACoF,KAAK,CAACC,IAAP,CAAvB,EAAqC;UACnC,OAAO,EACL,GAAGD,KADE;YAEL;YACAE,UAAU,EAAE,IAHP;YAILC,MAAM,EAAE,IAJH;YAKL;YACAC,QAAQ,EAAE;UANL,CAAP;QAQD;;QACD,IAAIA,QAAQ,GAAGC,OAAO,CAACL,KAAK,CAACC,IAAN,IAAcxF,wBAAwB,CAAC6F,IAAzB,CAA8BN,KAAK,CAACC,IAApC,CAAf,CAAtB;;QAEA,IAAI,CAACG,QAAL,EAAe;UAAA;;UACb;UACA;UACA;UACA,IACEJ,KAAK,CAACG,MAAN,KAAiB,CAAjB,IACAH,KAAK,CAACO,UAAN,KAAqB,aADrB,mBAEAP,KAAK,CAACC,IAFN,wCAEA,YAAYO,KAAZ,CAAkB,eAAlB,CAHF,EAIE;YACAJ,QAAQ,GAAG,IAAX;UACD;QACF;;QAED,OAAO,EAAE,IAAIJ,KAAK,IAAI,EAAb,CAAF;UAAoBI;QAApB,CAAP;MACD;IA5BW,CArBmC;IAmDjDK,WAAW,EAAE;MACX;MACAC,4BAA4B,EAAE,IAFnB;MAGXC,yBAAyB,EAAE,IAHhB;MAIXC,oBAAoB,EAAE5E,QAAQ,GAC1BiB,OAAO,CAACuC,OAAR,CAAgB,mDAAhB,CAD0B,GAE1BlB,0BAA0B,GAC1B;MACA;MACA;MACA/C,sBAAA,CAAYC,MAAZ,CAAmBR,WAAnB,EAAgC,sCAAhC,CAJ0B,GAK1B;MACAiC,OAAO,CAACuC,OAAR,CAAgB,4CAAhB,CAZO;MAaXqB,iBAAiB,EAAE,4CAbR;MAcXnF,YAAY,EAAED,eAAe,CAACT,WAAD;IAdlB;EAnDoC,CAA5C,CAAP;AAoED;;AAWM,eAAe8F,SAAf,CACL9F,WADK,EAEL;EAAE4D,QAAF;EAAYxB,MAAZ;EAAoB,GAAG2D;AAAvB,IAAqD,EAFhD,EAGyB;EAC9B,IAAIC,aAAa,GAAGlF,gBAAgB,CAACd,WAAD,EAAc;IAAEoC;EAAF,CAAd,CAApC;;EACA,IAAIwB,QAAJ,EAAc;IACZoC,aAAa,GAAG,EAAE,GAAGA,aAAL;MAAoBpC;IAApB,CAAhB;EACD;;EACD,MAAMrC,WAAW,GAAG,IAAAC,sDAAA,EAA6BxB,WAA7B,CAApB;EACA,OAAO,MAAMuB,WAAW,CAAC0E,UAAZ,CACX;IAAEC,GAAG,EAAElG,WAAP;IAAoBA,WAApB;IAAiC,GAAG+F;EAApC,CADW,EAEXC,aAFW,CAAb;AAID"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/metro-config",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "A Metro config for running React Native projects with the Metro bundler",
|
|
5
5
|
"main": "build/ExpoMetroConfig.js",
|
|
6
6
|
"scripts": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"transformer"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@expo/config": "7.0.2",
|
|
36
|
+
"@expo/config": "~7.0.2",
|
|
37
37
|
"@expo/json-file": "8.2.36",
|
|
38
38
|
"chalk": "^4.1.0",
|
|
39
39
|
"debug": "^4.3.2",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"publishConfig": {
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "a4a37bbc631362ec2a6d83eb6361d5059bbc67da"
|
|
52
52
|
}
|