Skip to content

fix: resolve Viro paths via node for workspace/monorepo installs - #516

Open
busybox11 wants to merge 1 commit into
ReactVision:developfrom
busybox11:fix/monorepo-workspace-paths
Open

fix: resolve Viro paths via node for workspace/monorepo installs#516
busybox11 wants to merge 1 commit into
ReactVision:developfrom
busybox11:fix/monorepo-workspace-paths

Conversation

@busybox11

Copy link
Copy Markdown

React-viro's expo config plugin hardcoded the package path as ../node_modules/@reactvision/react-viro/{android,ios} relative to the generated android/ and ios/ dirs. That only holds when react-viro is installed in the app's own node_modules.

In pnpm/yarn/npm workspaces the package is hoisted to the monorepo root (or nested under .pnpm), so:

  • Android: Gradle fails with "Configuring project ':gvr_common' without an existing directory is not allowed".
  • iOS: CocoaPods fails with "No podspec found for ViroKit" because the generated pod :path points at a non-existent directory.

Add resolveViroAndroidRelativePath / resolveViroIosRelativePath that resolve the package via require.resolve from the project root and emit a path relative to the platform project root, falling back to the previous relative path so flat installs behave exactly as before. Also add unit tests covering hoisted monorepo, flat, and unresolvable layouts.

Follow-up of #493, not sure why it got closed.

React-viro's expo config plugin hardcoded the package path as
`../node_modules/@reactvision/react-viro/{android,ios}` relative to the
generated android/ and ios/ dirs. That only holds when react-viro is
installed in the app's own node_modules.

In pnpm/yarn/npm workspaces the package is hoisted to the monorepo root
(or nested under .pnpm), so:
- Android: Gradle fails with "Configuring project ':gvr_common' without an
  existing directory is not allowed".
- iOS: CocoaPods fails with "No podspec found for ViroKit" because the
  generated pod :path points at a non-existent directory.

Add resolveViroAndroidRelativePath / resolveViroIosRelativePath that resolve
the package via require.resolve from the project root and emit a path relative
to the platform project root, falling back to the previous relative path so
flat installs behave exactly as before. Also add unit tests covering hoisted
monorepo, flat, and unresolvable layouts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant