rn-iso 0.3.2 → 0.3.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rn-iso",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Isolated React Native dev environments per project/worktree",
5
5
  "type": "module",
6
6
  "bin": {
@@ -150,6 +150,7 @@ export default function androidCommand(program) {
150
150
  packageManager,
151
151
  scriptName,
152
152
  isExpo,
153
+ avdName,
153
154
  serial,
154
155
  port: proj.metroPort,
155
156
  useScript,
package/src/runner.js CHANGED
@@ -64,9 +64,11 @@ export function buildScriptCommand(packageManager, scriptName, extraArgs = []) {
64
64
  }
65
65
  }
66
66
 
67
- // Decide which CLI a script invokes. Affects flag names: Expo CLI takes
68
- // --device <UDID>, bare RN CLI takes --udid <UDID> for iOS (--device there
69
- // means physical device by name) and --deviceId for Android.
67
+ // Decide which CLI a script invokes. Affects flag names:
68
+ // iOS: Expo `--device <UDID>` | RN `--udid <UDID>`
69
+ // Android: Expo `--device <AVD-name>` | RN `--deviceId <serial>`
70
+ // Expo's run:android resolves --device by name (not by serial), so we pass
71
+ // the AVD name there even though we boot/track by serial.
70
72
  export function detectScriptCli(scriptBody) {
71
73
  if (typeof scriptBody !== 'string') return 'unknown';
72
74
  if (/\bexpo\s+(run:ios|run:android|start)\b/.test(scriptBody)) return 'expo';
@@ -96,13 +98,13 @@ export function buildIosCommand({ projectRoot, packageManager, scriptName, isExp
96
98
  return `npx react-native run-ios --udid ${udid} --port ${port}`;
97
99
  }
98
100
 
99
- export function buildAndroidCommand({ projectRoot, packageManager, scriptName, isExpo, serial, port, useScript = true }) {
101
+ export function buildAndroidCommand({ projectRoot, packageManager, scriptName, isExpo, avdName, serial, port, useScript = true }) {
100
102
  if (useScript && scriptName) {
101
103
  const script = getProjectScript(projectRoot, scriptName);
102
104
  if (script) {
103
105
  const cli = detectScriptCli(script);
104
- // Expo: --device <serial>; RN: --deviceId <serial>.
105
- const deviceFlag = cli === 'expo' ? `--device ${serial}` : `--deviceId ${serial}`;
106
+ // Expo: --device <AVD name>; RN: --deviceId <serial>.
107
+ const deviceFlag = cli === 'expo' ? `--device "${avdName}"` : `--deviceId ${serial}`;
106
108
  return buildScriptCommand(packageManager, scriptName, [
107
109
  deviceFlag,
108
110
  `--port ${port}`,
@@ -110,7 +112,7 @@ export function buildAndroidCommand({ projectRoot, packageManager, scriptName, i
110
112
  }
111
113
  }
112
114
  if (isExpo) {
113
- return `npx expo run:android --device ${serial} --port ${port}`;
115
+ return `npx expo run:android --device "${avdName}" --port ${port}`;
114
116
  }
115
117
  return `RCT_METRO_PORT=${port} npx react-native run-android --deviceId ${serial}`;
116
118
  }