From 2f4c060c7fcbc1f899f70f261c8b15899cf37f4f Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Tue, 31 Jan 2023 12:29:55 +0100 Subject: [PATCH 01/11] fix: change way calling metro --- .../src/commands/buildAndroid/index.ts | 11 ++++++++++- .../commands/buildAndroid/startServerInNewWindow.ts | 13 +++++++------ packages/cli-plugin-metro/launchPackager.bat | 7 +++++++ packages/cli-plugin-metro/launchPackager.command | 8 ++++++++ packages/cli-plugin-metro/launchPackager.sh | 4 ++++ 5 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 packages/cli-plugin-metro/launchPackager.bat create mode 100755 packages/cli-plugin-metro/launchPackager.command create mode 100755 packages/cli-plugin-metro/launchPackager.sh diff --git a/packages/cli-platform-android/src/commands/buildAndroid/index.ts b/packages/cli-platform-android/src/commands/buildAndroid/index.ts index 05622b6d7..97609b3fb 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/index.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/index.ts @@ -13,6 +13,7 @@ import getAdbPath from '../runAndroid/getAdbPath'; import {startServerInNewWindow} from './startServerInNewWindow'; import {getTaskNames} from '../runAndroid/getTaskNames'; import {promptForTaskSelection} from '../runAndroid/listAndroidTasks'; +import path from 'path'; export interface BuildFlags { mode?: string; @@ -38,8 +39,16 @@ export async function runPackager(args: BuildFlags, config: Config) { } else { // result == 'not_running' logger.info('Starting JS server...'); + + const reactNativeCliPath = path.join(__dirname, '../../../..'); + try { - startServerInNewWindow(args.port, args.terminal, config.reactNativePath); + startServerInNewWindow( + args.port, + args.terminal, + reactNativeCliPath, + config.root, + ); } catch (error) { logger.warn( `Failed to automatically start the packager server. Please run "react-native start" manually. Error details: ${error.message}`, diff --git a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts index d534d5053..a287cf24e 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts @@ -6,7 +6,8 @@ import {logger} from '@react-native-community/cli-tools'; export function startServerInNewWindow( port: number, terminal: string, - reactNativePath: string, + reactNativeCliPath: string, + projectRoot: string, ) { /** * Set up OS-specific filenames and commands @@ -17,19 +18,19 @@ export function startServerInNewWindow( : 'launchPackager.command'; const packagerEnvFilename = isWindows ? '.packager.bat' : '.packager.env'; const portExportContent = isWindows - ? `set RCT_METRO_PORT=${port}` - : `export RCT_METRO_PORT=${port}`; + ? `set RCT_METRO_PORT=${port}\nset PROJECT_ROOT=${projectRoot}` + : `export RCT_METRO_PORT=${port}\nexport PROJECT_ROOT=${projectRoot}`; /** * Set up the `.packager.(env|bat)` file to ensure the packager starts on the right port. */ const launchPackagerScript = path.join( - reactNativePath, - `scripts/${scriptFile}`, + reactNativeCliPath, + `/cli-plugin-metro/${scriptFile}`, ); /** - * Set up the `launchpackager.(command|bat)` file. + * Set up the `launchPackager.(command|bat)` file. * It lives next to `.packager.(bat|env)` */ const scriptsDir = path.dirname(launchPackagerScript); diff --git a/packages/cli-plugin-metro/launchPackager.bat b/packages/cli-plugin-metro/launchPackager.bat new file mode 100644 index 000000000..013c93e3d --- /dev/null +++ b/packages/cli-plugin-metro/launchPackager.bat @@ -0,0 +1,7 @@ +@echo off +title Metro +call .packager.bat +cd %PROJECT_ROOT% +npx react-native start +pause +exit diff --git a/packages/cli-plugin-metro/launchPackager.command b/packages/cli-plugin-metro/launchPackager.command new file mode 100755 index 000000000..00f3d4308 --- /dev/null +++ b/packages/cli-plugin-metro/launchPackager.command @@ -0,0 +1,8 @@ +THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd) + +. $THIS_DIR/launchPackager.sh + +if [[ -z "$CI" ]]; then + echo "Process terminated. Press to close the window" + read -r +fi diff --git a/packages/cli-plugin-metro/launchPackager.sh b/packages/cli-plugin-metro/launchPackager.sh new file mode 100755 index 000000000..4345021f7 --- /dev/null +++ b/packages/cli-plugin-metro/launchPackager.sh @@ -0,0 +1,4 @@ +THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd) +source "$THIS_DIR/.packager.env" +cd $PROJECT_ROOT +npx react-native start \ No newline at end of file From 8ccde0b82226d4e1030b48f44c19b206b8ab94fe Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Wed, 1 Feb 2023 09:12:33 +0100 Subject: [PATCH 02/11] chore: add .env to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c6980aef9..41fd0f362 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ build/ .watchmanconfig coverage !packages/cli-platform-ios/src/config/__fixtures__/native_modules/node_modules +*.env \ No newline at end of file From 8aabb99892b47fb934952ab12bc0b5689f198092 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Wed, 1 Feb 2023 09:40:19 +0100 Subject: [PATCH 03/11] fix: change way to get CLI path --- .../src/commands/buildAndroid/index.ts | 10 +--------- .../commands/buildAndroid/startServerInNewWindow.ts | 10 +++++----- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/cli-platform-android/src/commands/buildAndroid/index.ts b/packages/cli-platform-android/src/commands/buildAndroid/index.ts index 97609b3fb..77a24b167 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/index.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/index.ts @@ -13,7 +13,6 @@ import getAdbPath from '../runAndroid/getAdbPath'; import {startServerInNewWindow} from './startServerInNewWindow'; import {getTaskNames} from '../runAndroid/getTaskNames'; import {promptForTaskSelection} from '../runAndroid/listAndroidTasks'; -import path from 'path'; export interface BuildFlags { mode?: string; @@ -40,15 +39,8 @@ export async function runPackager(args: BuildFlags, config: Config) { // result == 'not_running' logger.info('Starting JS server...'); - const reactNativeCliPath = path.join(__dirname, '../../../..'); - try { - startServerInNewWindow( - args.port, - args.terminal, - reactNativeCliPath, - config.root, - ); + startServerInNewWindow(args.port, args.terminal, config.root); } catch (error) { logger.warn( `Failed to automatically start the packager server. Please run "react-native start" manually. Error details: ${error.message}`, diff --git a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts index a287cf24e..37459c73f 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts @@ -6,9 +6,12 @@ import {logger} from '@react-native-community/cli-tools'; export function startServerInNewWindow( port: number, terminal: string, - reactNativeCliPath: string, projectRoot: string, ) { + const reactNativeCliPath = path.dirname( + require.resolve('@react-native-community/cli-plugin-metro/package.json'), + ); + /** * Set up OS-specific filenames and commands */ @@ -24,10 +27,7 @@ export function startServerInNewWindow( /** * Set up the `.packager.(env|bat)` file to ensure the packager starts on the right port. */ - const launchPackagerScript = path.join( - reactNativeCliPath, - `/cli-plugin-metro/${scriptFile}`, - ); + const launchPackagerScript = path.join(reactNativeCliPath, `${scriptFile}`); /** * Set up the `launchPackager.(command|bat)` file. From 7eb8c1b706a017f7b7eac70ab02f504030c1513f Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Tue, 7 Mar 2023 08:23:52 +0100 Subject: [PATCH 04/11] fix: code review improvements --- packages/cli-platform-android/package.json | 1 + .../src/commands/buildAndroid/index.ts | 7 +++- .../buildAndroid/startServerInNewWindow.ts | 42 +++++++++++++------ packages/cli-plugin-metro/launchPackager.sh | 2 +- 4 files changed, 37 insertions(+), 15 deletions(-) mode change 100755 => 100644 packages/cli-plugin-metro/launchPackager.sh diff --git a/packages/cli-platform-android/package.json b/packages/cli-platform-android/package.json index c101ac072..f6e725f40 100644 --- a/packages/cli-platform-android/package.json +++ b/packages/cli-platform-android/package.json @@ -21,6 +21,7 @@ ], "devDependencies": { "@react-native-community/cli-types": "^11.0.0-alpha.2", + "@react-native-community/cli-plugin-metro": "^11.0.0-alpha.2", "@types/execa": "^0.9.0", "@types/fs-extra": "^8.1.0", "@types/glob": "^7.1.1" diff --git a/packages/cli-platform-android/src/commands/buildAndroid/index.ts b/packages/cli-platform-android/src/commands/buildAndroid/index.ts index 77a24b167..b6fd08ec9 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/index.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/index.ts @@ -40,7 +40,12 @@ export async function runPackager(args: BuildFlags, config: Config) { logger.info('Starting JS server...'); try { - startServerInNewWindow(args.port, args.terminal, config.root); + startServerInNewWindow( + args.port, + args.terminal, + config.root, + config.reactNativePath, + ); } catch (error) { logger.warn( `Failed to automatically start the packager server. Please run "react-native start" manually. Error details: ${error.message}`, diff --git a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts index 37459c73f..af405f4b8 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts @@ -7,11 +7,8 @@ export function startServerInNewWindow( port: number, terminal: string, projectRoot: string, + reactNativePath: string, ) { - const reactNativeCliPath = path.dirname( - require.resolve('@react-native-community/cli-plugin-metro/package.json'), - ); - /** * Set up OS-specific filenames and commands */ @@ -20,31 +17,50 @@ export function startServerInNewWindow( ? 'launchPackager.bat' : 'launchPackager.command'; const packagerEnvFilename = isWindows ? '.packager.bat' : '.packager.env'; - const portExportContent = isWindows - ? `set RCT_METRO_PORT=${port}\nset PROJECT_ROOT=${projectRoot}` - : `export RCT_METRO_PORT=${port}\nexport PROJECT_ROOT=${projectRoot}`; + const packagerEnvFileExportContent = isWindows + ? `set RCT_METRO_PORT=${port}\nset PROJECT_ROOT=${projectRoot}\nset REACT_NATIVE_PATH=${reactNativePath}` + : `export RCT_METRO_PORT=${port}\nexport PROJECT_ROOT=${projectRoot}\nexport REACT_NATIVE_PATH=${reactNativePath}`; + const nodeModulesPath = path.join(projectRoot, 'node_modules/.bin'); + const cliPluginMetroPath = path.dirname( + require.resolve('@react-native-community/cli-plugin-metro/package.json'), + ); /** - * Set up the `.packager.(env|bat)` file to ensure the packager starts on the right port. + * Set up the `.packager.(env|bat)` file to ensure the packager starts on the right port and in right directory. */ - const launchPackagerScript = path.join(reactNativeCliPath, `${scriptFile}`); + const packagerEnvFile = path.join(nodeModulesPath, `${packagerEnvFilename}`); /** * Set up the `launchPackager.(command|bat)` file. * It lives next to `.packager.(bat|env)` */ - const scriptsDir = path.dirname(launchPackagerScript); - const packagerEnvFile = path.join(scriptsDir, packagerEnvFilename); - const procConfig: execa.SyncOptions = {cwd: scriptsDir}; + const launchPackagerScript = path.join(nodeModulesPath, scriptFile); + const procConfig: execa.SyncOptions = {cwd: path.dirname(packagerEnvFile)}; /** * Ensure we overwrite file by passing the `w` flag */ - fs.writeFileSync(packagerEnvFile, portExportContent, { + fs.writeFileSync(packagerEnvFile, packagerEnvFileExportContent, { encoding: 'utf8', flag: 'w', }); + /** + * Copy files into `node_modules/.bin`. + */ + fs.copyFileSync( + path.join(cliPluginMetroPath, 'launchPackager.command'), + path.join(nodeModulesPath, 'launchPackager.command'), + ); + fs.copyFileSync( + path.join(cliPluginMetroPath, 'launchPackager.bat'), + path.join(nodeModulesPath, 'launchPackager.bat'), + ); + fs.copyFileSync( + path.join(cliPluginMetroPath, 'launchPackager.sh'), + path.join(nodeModulesPath, 'launchPackager.sh'), + ); + if (process.platform === 'darwin') { try { return execa.sync( diff --git a/packages/cli-plugin-metro/launchPackager.sh b/packages/cli-plugin-metro/launchPackager.sh old mode 100755 new mode 100644 index 4345021f7..68d857ea8 --- a/packages/cli-plugin-metro/launchPackager.sh +++ b/packages/cli-plugin-metro/launchPackager.sh @@ -1,4 +1,4 @@ THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd) source "$THIS_DIR/.packager.env" cd $PROJECT_ROOT -npx react-native start \ No newline at end of file +$REACT_NATIVE_PATH/cli.js start From f5580db8a0e09dc92ee386c8692f81b770121946 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Tue, 7 Mar 2023 15:39:19 +0100 Subject: [PATCH 05/11] fix: replace `npx react-native` with direct CLI call --- packages/cli-plugin-metro/launchPackager.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli-plugin-metro/launchPackager.bat b/packages/cli-plugin-metro/launchPackager.bat index 013c93e3d..377929108 100644 --- a/packages/cli-plugin-metro/launchPackager.bat +++ b/packages/cli-plugin-metro/launchPackager.bat @@ -2,6 +2,6 @@ title Metro call .packager.bat cd %PROJECT_ROOT% -npx react-native start +node %REACT_NATIVE_PATH%/cli.js start pause exit From 43044c4cd81bced58ee908cf587c3902ac4089a9 Mon Sep 17 00:00:00 2001 From: Szymon Rybczak Date: Wed, 8 Mar 2023 08:49:49 +0100 Subject: [PATCH 06/11] Update packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts Co-authored-by: Tommy Nguyen <4123478+tido64@users.noreply.github.com> --- .../src/commands/buildAndroid/startServerInNewWindow.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts index af405f4b8..9974aed28 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts @@ -20,7 +20,7 @@ export function startServerInNewWindow( const packagerEnvFileExportContent = isWindows ? `set RCT_METRO_PORT=${port}\nset PROJECT_ROOT=${projectRoot}\nset REACT_NATIVE_PATH=${reactNativePath}` : `export RCT_METRO_PORT=${port}\nexport PROJECT_ROOT=${projectRoot}\nexport REACT_NATIVE_PATH=${reactNativePath}`; - const nodeModulesPath = path.join(projectRoot, 'node_modules/.bin'); + const nodeModulesPath = path.join(projectRoot, 'node_modules', '.bin'); const cliPluginMetroPath = path.dirname( require.resolve('@react-native-community/cli-plugin-metro/package.json'), ); From 5f4337ca1f74bb91be5e9f9b643b828763858d3a Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Wed, 8 Mar 2023 09:15:31 +0100 Subject: [PATCH 07/11] fix: remove `launchPackager.command` --- .../src/commands/buildAndroid/startServerInNewWindow.ts | 8 +------- packages/cli-plugin-metro/launchPackager.command | 8 -------- packages/cli-plugin-metro/launchPackager.sh | 0 3 files changed, 1 insertion(+), 15 deletions(-) delete mode 100755 packages/cli-plugin-metro/launchPackager.command mode change 100644 => 100755 packages/cli-plugin-metro/launchPackager.sh diff --git a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts index 9974aed28..6ac0e0694 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts @@ -13,9 +13,7 @@ export function startServerInNewWindow( * Set up OS-specific filenames and commands */ const isWindows = /^win/.test(process.platform); - const scriptFile = isWindows - ? 'launchPackager.bat' - : 'launchPackager.command'; + const scriptFile = isWindows ? 'launchPackager.bat' : 'launchPackager.sh'; const packagerEnvFilename = isWindows ? '.packager.bat' : '.packager.env'; const packagerEnvFileExportContent = isWindows ? `set RCT_METRO_PORT=${port}\nset PROJECT_ROOT=${projectRoot}\nset REACT_NATIVE_PATH=${reactNativePath}` @@ -48,10 +46,6 @@ export function startServerInNewWindow( /** * Copy files into `node_modules/.bin`. */ - fs.copyFileSync( - path.join(cliPluginMetroPath, 'launchPackager.command'), - path.join(nodeModulesPath, 'launchPackager.command'), - ); fs.copyFileSync( path.join(cliPluginMetroPath, 'launchPackager.bat'), path.join(nodeModulesPath, 'launchPackager.bat'), diff --git a/packages/cli-plugin-metro/launchPackager.command b/packages/cli-plugin-metro/launchPackager.command deleted file mode 100755 index 00f3d4308..000000000 --- a/packages/cli-plugin-metro/launchPackager.command +++ /dev/null @@ -1,8 +0,0 @@ -THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd) - -. $THIS_DIR/launchPackager.sh - -if [[ -z "$CI" ]]; then - echo "Process terminated. Press to close the window" - read -r -fi diff --git a/packages/cli-plugin-metro/launchPackager.sh b/packages/cli-plugin-metro/launchPackager.sh old mode 100644 new mode 100755 From d35714cb693a9365d3eadca9755c68973d573453 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Wed, 8 Mar 2023 09:18:17 +0100 Subject: [PATCH 08/11] fix: add missing newline in `.gitignore` --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 41fd0f362..67c4f43e7 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,4 @@ build/ .watchmanconfig coverage !packages/cli-platform-ios/src/config/__fixtures__/native_modules/node_modules -*.env \ No newline at end of file +*.env From 10dda2147c8d68f3b63a4211b15ebd45da454bd2 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Wed, 8 Mar 2023 11:52:43 +0100 Subject: [PATCH 09/11] fix: add missing process terminated to `launchPackager.sh` --- packages/cli-plugin-metro/launchPackager.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/cli-plugin-metro/launchPackager.sh b/packages/cli-plugin-metro/launchPackager.sh index 68d857ea8..0ca3e2088 100755 --- a/packages/cli-plugin-metro/launchPackager.sh +++ b/packages/cli-plugin-metro/launchPackager.sh @@ -2,3 +2,8 @@ THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOUR source "$THIS_DIR/.packager.env" cd $PROJECT_ROOT $REACT_NATIVE_PATH/cli.js start + +if [[ -z "$CI" ]]; then + echo "Process terminated. Press to close the window" + read -r +fi From a3f8681ea3f54df38314675c0f96735adaff5538 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Wed, 22 Mar 2023 08:47:07 +0100 Subject: [PATCH 10/11] refactor: code cleaning --- .../buildAndroid/startServerInNewWindow.ts | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts index 6ac0e0694..f7ff72fb1 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/startServerInNewWindow.ts @@ -1,7 +1,11 @@ import path from 'path'; import fs from 'fs'; import execa from 'execa'; -import {logger} from '@react-native-community/cli-tools'; +import { + CLIError, + logger, + resolveNodeModuleDir, +} from '@react-native-community/cli-tools'; export function startServerInNewWindow( port: number, @@ -18,7 +22,7 @@ export function startServerInNewWindow( const packagerEnvFileExportContent = isWindows ? `set RCT_METRO_PORT=${port}\nset PROJECT_ROOT=${projectRoot}\nset REACT_NATIVE_PATH=${reactNativePath}` : `export RCT_METRO_PORT=${port}\nexport PROJECT_ROOT=${projectRoot}\nexport REACT_NATIVE_PATH=${reactNativePath}`; - const nodeModulesPath = path.join(projectRoot, 'node_modules', '.bin'); + const nodeModulesPath = resolveNodeModuleDir(projectRoot, '.bin'); const cliPluginMetroPath = path.dirname( require.resolve('@react-native-community/cli-plugin-metro/package.json'), ); @@ -46,14 +50,25 @@ export function startServerInNewWindow( /** * Copy files into `node_modules/.bin`. */ - fs.copyFileSync( - path.join(cliPluginMetroPath, 'launchPackager.bat'), - path.join(nodeModulesPath, 'launchPackager.bat'), - ); - fs.copyFileSync( - path.join(cliPluginMetroPath, 'launchPackager.sh'), - path.join(nodeModulesPath, 'launchPackager.sh'), - ); + + try { + if (isWindows) { + fs.copyFileSync( + path.join(cliPluginMetroPath, 'launchPackager.bat'), + path.join(nodeModulesPath, 'launchPackager.bat'), + ); + } else { + fs.copyFileSync( + path.join(cliPluginMetroPath, 'launchPackager.sh'), + path.join(nodeModulesPath, 'launchPackager.sh'), + ); + } + } catch (error) { + return new CLIError( + `Couldn't copy the script for running bundler. Please check if the "${scriptFile}" file exists in the "node_modules/@react-native-community/cli-plugin-metro" folder and try again.`, + error as any, + ); + } if (process.platform === 'darwin') { try { @@ -77,7 +92,7 @@ export function startServerInNewWindow( return execa.sync('sh', [launchPackagerScript], procConfig); } } - if (/^win/.test(process.platform)) { + if (isWindows) { // Awaiting this causes the CLI to hang indefinitely, so this must execute without await. return execa('cmd.exe', ['/C', launchPackagerScript], { ...procConfig, From 91ff1801355f199f84e3a9380496f52c04328c92 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Thu, 23 Mar 2023 18:11:46 +0100 Subject: [PATCH 11/11] fix: paths in `launchPackager.bat` --- packages/cli-plugin-metro/launchPackager.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli-plugin-metro/launchPackager.bat b/packages/cli-plugin-metro/launchPackager.bat index 377929108..a76f4f06f 100644 --- a/packages/cli-plugin-metro/launchPackager.bat +++ b/packages/cli-plugin-metro/launchPackager.bat @@ -1,7 +1,7 @@ @echo off title Metro call .packager.bat -cd %PROJECT_ROOT% -node %REACT_NATIVE_PATH%/cli.js start +cd "%PROJECT_ROOT%" +node "%REACT_NATIVE_PATH%/cli.js" start pause exit