Skip to content

Commit 15013dd

Browse files
robhoganfacebook-github-bot
authored andcommitted
Refactor imports from Metro to avoid deprecated styles and prefer main package (#57378)
Summary: Refactor Metro imports to: - Remove use of deprecated default object export, prefer named/namespace exports. - Prefer imports from `metro`, remove public dependencies on `metro-core` and `metro-config` from `react-native/community-cli-plugin`. Changelog: [Internal] Differential Revision: D110177050
1 parent b364490 commit 15013dd

5 files changed

Lines changed: 17 additions & 16 deletions

File tree

packages/community-cli-plugin/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535
"debug": "^4.4.0",
3636
"invariant": "^2.2.4",
3737
"metro": "^0.85.0",
38-
"metro-config": "^0.85.0",
39-
"metro-core": "^0.85.0",
4038
"semver": "^7.1.3"
4139
},
4240
"devDependencies": {

packages/community-cli-plugin/src/commands/bundle/buildBundle.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import type {Config} from '@react-native-community/cli-types';
1212
import type {RunBuildOptions} from 'metro';
13-
import type {ConfigT} from 'metro-config';
1413

1514
import loadMetroConfig from '../../utils/loadMetroConfig';
1615
import parseKeyValueParamArray from '../../utils/parseKeyValueParamArray';
@@ -20,6 +19,8 @@ import {runBuild} from 'metro';
2019
import path from 'path';
2120
import {styleText} from 'util';
2221

22+
type HydratedMetroConfig = Awaited<ReturnType<typeof loadMetroConfig>>;
23+
2324
export type BundleCommandArgs = {
2425
assetsDest?: string,
2526
assetCatalogDest?: string,
@@ -60,7 +61,7 @@ async function buildBundle(
6061

6162
async function buildBundleWithConfig(
6263
args: BundleCommandArgs,
63-
config: ConfigT,
64+
config: HydratedMetroConfig,
6465
bundleImpl?: RunBuildOptions['output'],
6566
): Promise<void> {
6667
const customResolverOptions = parseKeyValueParamArray(

packages/community-cli-plugin/src/commands/start/runServer.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ import * as version from '../../utils/version';
1818
import attachKeyHandlers from './attachKeyHandlers';
1919
import {createDevServerMiddleware} from './middleware';
2020
import {createDevMiddleware} from '@react-native/dev-middleware';
21-
import Metro from 'metro';
22-
import {Terminal} from 'metro-core';
21+
import * as Metro from 'metro';
2322
import path from 'path';
2423
import url from 'url';
2524
import {styleText} from 'util';
@@ -104,7 +103,7 @@ async function runServer(
104103
}
105104

106105
let reportEvent: (event: TerminalReportableEvent) => void;
107-
const terminal = new Terminal(process.stdout);
106+
const terminal = new Metro.Terminal(process.stdout);
108107
const ReporterImpl = getReporterImpl(args.customLogReporterPath);
109108
const terminalReporter = new ReporterImpl(terminal);
110109

packages/community-cli-plugin/src/utils/loadMetroConfig.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@
99
*/
1010

1111
import type {Config} from '@react-native-community/cli-types';
12-
import type {ConfigT, InputConfigT, YargArguments} from 'metro-config';
12+
import type {MetroConfig} from 'metro';
1313

1414
import {CLIError} from './errors';
1515
import {reactNativePlatformResolver} from './metroPlatformResolver';
16-
import {loadConfig, resolveConfig} from 'metro-config';
16+
import {loadConfig, resolveConfig} from 'metro';
1717
import path from 'path';
1818

1919
const debug = require('debug')('ReactNative:CommunityCliPlugin');
2020

21+
type HydratedMetroConfig = Awaited<ReturnType<typeof loadConfig>>;
22+
type ArgvInput = Parameters<typeof loadConfig>[0];
23+
2124
export type {Config};
2225

2326
export type ConfigLoadingContext = Readonly<{
@@ -32,12 +35,12 @@ export type ConfigLoadingContext = Readonly<{
3235
*/
3336
function getCommunityCliDefaultConfig(
3437
ctx: ConfigLoadingContext,
35-
config: ConfigT,
36-
): InputConfigT {
38+
config: HydratedMetroConfig,
39+
): MetroConfig {
3740
const outOfTreePlatforms = Object.keys(ctx.platforms).filter(
3841
platform => ctx.platforms[platform].npmPackageName,
3942
);
40-
const resolver: Partial<{...ConfigT['resolver']}> = {
43+
const resolver: Partial<{...HydratedMetroConfig['resolver']}> = {
4144
platforms: [...Object.keys(ctx.platforms), 'native'],
4245
};
4346

@@ -83,8 +86,8 @@ function getCommunityCliDefaultConfig(
8386
*/
8487
export default async function loadMetroConfig(
8588
ctx: ConfigLoadingContext,
86-
options: YargArguments = {},
87-
): Promise<ConfigT> {
89+
options: NonNullable<ArgvInput> = {},
90+
): Promise<HydratedMetroConfig> {
8891
let RNMetroConfig = null;
8992
try {
9093
RNMetroConfig = require('@react-native/metro-config');
@@ -122,7 +125,7 @@ export default async function loadMetroConfig(
122125
if (!global.__REACT_NATIVE_METRO_CONFIG_LOADED) {
123126
const warning = `
124127
=================================================================================================
125-
From React Native 0.73, your project's Metro config should extend '@react-native/metro-config'
128+
From React Native 0.73, yarn fyour project's Metro config should extend '@react-native/metro-config'
126129
or it will fail to build. Please copy the template at:
127130
https://github.com/react-native-community/template/blob/main/template/metro.config.js
128131
This warning will be removed in future (https://github.com/facebook/metro/issues/1018).

private/react-native-fantom/runner/global-setup/globalSetup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {getTestBuildOutputPath} from '../paths';
1616
import build from './build';
1717
import {createDevMiddleware} from '@react-native/dev-middleware';
1818
import connect from 'connect';
19-
import Metro from 'metro';
19+
import * as Metro from 'metro';
2020
import {Server} from 'net';
2121
import path from 'path';
2222

0 commit comments

Comments
 (0)