/
ExpoMetroConfig.js.map
1 lines (1 loc) · 20.1 KB
/
ExpoMetroConfig.js.map
1
{"version":3,"file":"ExpoMetroConfig.js","names":["_config","data","require","_paths","runtimeEnv","_interopRequireWildcard","_jsonFile","_interopRequireDefault","_chalk","_metroCache","_metroConfig","_path","_resolveFrom","_customizeFrame","_env2","_getModulesPaths","_getWatchFolders","_rewriteRequestUrl","_withExpoSerializers","_postcss","_metroConfig2","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","debug","getAssetPlugins","projectRoot","hashAssetFilesPath","resolveFrom","silent","Error","hasWarnedAboutExotic","getDefaultConfig","mode","isCSSEnabled","getDefaultMetroConfig","mergeConfig","importMetroConfig","isExotic","env","EXPO_USE_EXOTIC","console","log","chalk","gray","bold","reactNativePath","path","dirname","babelPresetFbjsPath","process","EXPO_METRO_CACHE_KEY_VERSION","String","version","sourceExtsConfig","isTS","isReact","isModern","sourceExts","getBareExtensions","push","reanimatedVersion","getPkgVersion","sassVersion","envFiles","getFiles","NODE_ENV","pkg","getPackageJson","watchFolders","getWatchFolders","nodeModulesPaths","getModulesPaths","EXPO_DEBUG","join","reporter","metroDefaultValues","getDefaultValues","metroConfig","resolver","unstable_conditionNames","resolverMainFields","platforms","assetExts","concat","filter","assetExt","includes","watcher","additionalExts","map","file","replace","serializer","getModulesRunBeforeMainModule","preModules","resolve","metroRuntime","getPolyfills","server","rewriteRequestUrl","getRewriteRequestUrl","port","Number","RCT_METRO_PORT","unstable_serverRoot","getServerRoot","symbolicator","customizeFrame","getDefaultCustomizeFrame","transformerPath","transformer","postcssHash","getPostcssConfigHash","browserslistHash","browserslist","stableHash","JSON","stringify","toString","unstable_allowRequireContext","allowOptionalDependencies","babelTransformerPath","assetRegistryPath","assetPlugins","withExpoSerializers","loadAsync","metroOptions","defaultConfig","loadConfig","cwd","exports","pkgName","targetPkg","targetPkgJson","findUpPackageJson","JsonFile","read","pkgVersion","sep","found"],"sources":["../src/ExpoMetroConfig.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { getPackageJson } from '@expo/config';\nimport { getBareExtensions } from '@expo/config/paths';\nimport * as runtimeEnv from '@expo/env';\nimport JsonFile from '@expo/json-file';\nimport chalk from 'chalk';\nimport { Reporter } from 'metro';\nimport { stableHash } from 'metro-cache';\nimport { ConfigT as MetroConfig, InputConfigT } from 'metro-config';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { getDefaultCustomizeFrame, INTERNAL_CALLSITES_REGEX } from './customizeFrame';\nimport { env } from './env';\nimport { getModulesPaths, getServerRoot } from './getModulesPaths';\nimport { getWatchFolders } from './getWatchFolders';\nimport { getRewriteRequestUrl } from './rewriteRequestUrl';\nimport { withExpoSerializers } from './serializer/withExpoSerializers';\nimport { getPostcssConfigHash } from './transform-worker/postcss';\nimport { importMetroConfig } from './traveling/metro-config';\n\nconst debug = require('debug')('expo:metro:config') as typeof console.log;\n\nexport interface LoadOptions {\n config?: string;\n maxWorkers?: number;\n port?: number;\n reporter?: Reporter;\n resetCache?: boolean;\n}\n\nexport interface DefaultConfigOptions {\n /** @deprecated */\n mode?: 'exotic';\n /**\n * **Experimental:** Enable CSS support for Metro web, and shim on native.\n *\n * This is an experimental feature and may change in the future. The underlying implementation\n * is subject to change, and native support for CSS Modules may be added in the future during a non-major SDK release.\n */\n isCSSEnabled?: boolean;\n}\n\nfunction getAssetPlugins(projectRoot: string): string[] {\n const hashAssetFilesPath = resolveFrom.silent(projectRoot, 'expo-asset/tools/hashAssetFiles');\n\n if (!hashAssetFilesPath) {\n throw new Error(`The required package \\`expo-asset\\` cannot be found`);\n }\n\n return [hashAssetFilesPath];\n}\n\nlet hasWarnedAboutExotic = false;\n\nexport function getDefaultConfig(\n projectRoot: string,\n { mode, isCSSEnabled = true }: DefaultConfigOptions = {}\n): InputConfigT {\n const { getDefaultConfig: getDefaultMetroConfig, mergeConfig } = importMetroConfig(projectRoot);\n\n const isExotic = mode === 'exotic' || env.EXPO_USE_EXOTIC;\n\n if (isExotic && !hasWarnedAboutExotic) {\n hasWarnedAboutExotic = true;\n console.log(\n chalk.gray(`\\u203A Feature ${chalk.bold`EXPO_USE_EXOTIC`} is no longer supported.`)\n );\n }\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 sourceExtsConfig = { isTS: true, isReact: true, isModern: true };\n const sourceExts = getBareExtensions([], sourceExtsConfig);\n\n // Add support for cjs (without platform extensions).\n sourceExts.push('cjs');\n\n const reanimatedVersion = getPkgVersion(projectRoot, 'react-native-reanimated');\n\n let sassVersion: string | null = null;\n if (isCSSEnabled) {\n sassVersion = getPkgVersion(projectRoot, 'sass');\n // Enable SCSS by default so we can provide a better error message\n // when sass isn't installed.\n sourceExts.push('scss', 'sass', 'css');\n }\n\n const envFiles = runtimeEnv.getFiles(process.env.NODE_ENV, { silent: true });\n\n const pkg = getPackageJson(projectRoot);\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 (env.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(`- Extensions: ${sourceExts.join(', ')}`);\n console.log(`- React Native: ${reactNativePath}`);\n console.log(`- Watch Folders: ${watchFolders.join(', ')}`);\n console.log(`- Node Module Paths: ${nodeModulesPaths.join(', ')}`);\n console.log(`- Env Files: ${envFiles}`);\n console.log(`- Sass: ${sassVersion}`);\n console.log(`- Reanimated: ${reanimatedVersion}`);\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 } = getDefaultMetroConfig.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 const metroConfig: Partial<MetroConfig> = mergeConfig(metroDefaultValues, {\n watchFolders,\n resolver: {\n // unstable_conditionsByPlatform: { web: ['browser'] },\n unstable_conditionNames: ['require', 'import', 'react-native'],\n resolverMainFields: ['react-native', 'browser', 'main'],\n platforms: ['ios', 'android'],\n assetExts: metroDefaultValues.resolver.assetExts\n .concat(\n // Add default support for `expo-image` file types.\n ['heic', 'avif']\n )\n .filter((assetExt) => !sourceExts.includes(assetExt)),\n sourceExts,\n nodeModulesPaths,\n },\n watcher: {\n // strip starting dot from env files\n additionalExts: envFiles.map((file: string) => file.replace(/^\\./, '')),\n },\n serializer: {\n getModulesRunBeforeMainModule: () => {\n const preModules: string[] = [\n // MUST be first\n require.resolve(path.join(reactNativePath, 'Libraries/Core/InitializeCore')),\n ];\n\n // We need to shift this to be the first module so web Fast Refresh works as expected.\n // This will only be applied if the module is installed and imported somewhere in the bundle already.\n const metroRuntime = resolveFrom.silent(projectRoot, '@expo/metro-runtime');\n if (metroRuntime) {\n preModules.push(metroRuntime);\n }\n\n return preModules;\n },\n getPolyfills: () => require(path.join(reactNativePath, 'rn-get-polyfills'))(),\n },\n server: {\n rewriteRequestUrl: getRewriteRequestUrl(projectRoot),\n port: Number(env.RCT_METRO_PORT) || 8081,\n // NOTE(EvanBacon): Moves the server root down to the monorepo root.\n // This enables proper monorepo support for web.\n unstable_serverRoot: getServerRoot(projectRoot),\n },\n symbolicator: {\n customizeFrame: getDefaultCustomizeFrame(),\n },\n transformerPath: isCSSEnabled\n ? // Custom worker that adds CSS support for Metro web.\n require.resolve('./transform-worker/transform-worker')\n : metroDefaultValues.transformerPath,\n\n transformer: {\n // Custom: These are passed to `getCacheKey` and ensure invalidation when the version changes.\n // @ts-expect-error: not on type.\n postcssHash: getPostcssConfigHash(projectRoot),\n browserslistHash: pkg.browserslist\n ? stableHash(JSON.stringify(pkg.browserslist)).toString('hex')\n : null,\n sassVersion,\n // Ensure invalidation when the version changes due to the Babel plugin.\n reanimatedVersion,\n\n // `require.context` support\n unstable_allowRequireContext: true,\n allowOptionalDependencies: true,\n babelTransformerPath: require.resolve('./babel-transformer'),\n assetRegistryPath: 'react-native/Libraries/Image/AssetRegistry',\n assetPlugins: getAssetPlugins(projectRoot),\n },\n });\n\n return withExpoSerializers(metroConfig);\n}\n\nexport async function loadAsync(\n projectRoot: string,\n { reporter, ...metroOptions }: LoadOptions = {}\n): Promise<MetroConfig> {\n let defaultConfig = getDefaultConfig(projectRoot);\n if (reporter) {\n defaultConfig = { ...defaultConfig, reporter };\n }\n\n const { loadConfig } = importMetroConfig(projectRoot);\n\n return await loadConfig({ cwd: projectRoot, projectRoot, ...metroOptions }, defaultConfig);\n}\n\n// re-export for use in config files.\nexport { MetroConfig, INTERNAL_CALLSITES_REGEX };\n\n// re-export for legacy cases.\nexport const EXPO_DEBUG = env.EXPO_DEBUG;\n\nfunction getPkgVersion(projectRoot: string, pkgName: string): string | null {\n const targetPkg = resolveFrom.silent(projectRoot, pkgName);\n if (!targetPkg) return null;\n const targetPkgJson = findUpPackageJson(targetPkg);\n if (!targetPkgJson) return null;\n const pkg = JsonFile.read(targetPkgJson);\n\n debug(`${pkgName} package.json:`, targetPkgJson);\n const pkgVersion = pkg.version;\n if (typeof pkgVersion === 'string') {\n return pkgVersion;\n }\n\n return null;\n}\n\nfunction findUpPackageJson(cwd: string): string | null {\n if (['.', path.sep].includes(cwd)) return null;\n\n const found = resolveFrom.silent(cwd, './package.json');\n if (found) {\n return found;\n }\n return findUpPackageJson(path.dirname(cwd));\n}\n"],"mappings":"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"}