[object Object]

← back to Nineoh Guide

auto-save: 2026-07-27T10:19:40 (2 files) — .npmrc apps/mobile/metro.config.js

8a2cd67942bff3a4d259a8b3b80ea013d9e08c8e · 2026-07-27 10:19:47 -0700 · Steve Abrams

Files touched

Diff

commit 8a2cd67942bff3a4d259a8b3b80ea013d9e08c8e
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Jul 27 10:19:47 2026 -0700

    auto-save: 2026-07-27T10:19:40 (2 files) — .npmrc apps/mobile/metro.config.js
---
 .npmrc                      |  5 +++++
 apps/mobile/metro.config.js | 22 ++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/.npmrc b/.npmrc
index d099685..fd590fb 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1 +1,6 @@
 verify-deps-before-run=false
+# React Native / Metro cannot traverse pnpm's isolated .pnpm symlink store to
+# resolve transitive deps (e.g. @babel/runtime). Hoist to a flat node_modules
+# so the Expo/EAS "Bundle JavaScript" phase can resolve them. Safe for the
+# Next.js web app + Vercel + Turborepo, which all handle a hoisted layout.
+node-linker=hoisted
diff --git a/apps/mobile/metro.config.js b/apps/mobile/metro.config.js
new file mode 100644
index 0000000..bf84b39
--- /dev/null
+++ b/apps/mobile/metro.config.js
@@ -0,0 +1,22 @@
+// Metro config for the Expo app inside the nineoh-guide pnpm/Turborepo monorepo.
+// Learn more: https://docs.expo.dev/guides/monorepos/
+const { getDefaultConfig } = require("expo/metro-config");
+const path = require("path");
+
+const projectRoot = __dirname;
+const monorepoRoot = path.resolve(projectRoot, "../..");
+
+const config = getDefaultConfig(projectRoot);
+
+// 1. Watch the whole monorepo so Metro can see packages/core (@nineoh/core),
+//    which lives outside apps/mobile.
+config.watchFolders = [monorepoRoot];
+
+// 2. Resolve modules from the app first, then the hoisted monorepo root
+//    (where node-linker=hoisted places transitive deps like @babel/runtime).
+config.resolver.nodeModulesPaths = [
+  path.resolve(projectRoot, "node_modules"),
+  path.resolve(monorepoRoot, "node_modules"),
+];
+
+module.exports = config;

← 33f7f03 chore(mobile): eas init (project d1c16075) + wire EXPO_PUBLI  ·  back to Nineoh Guide  ·  fix(mobile): pnpm 11 honors nodeLinker in pnpm-workspace.yam 904b355 →