aboutsummaryrefslogtreecommitdiffstats
path: root/apps/mobile/metro.config.js
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-03-13 21:43:44 +0000
committerMohamed Bassem <me@mbassem.com>2024-03-14 16:40:45 +0000
commit04572a8e5081b1e4871e273cde9dbaaa44c52fe0 (patch)
tree8e993acb732a50d1306d4d6953df96c165c57f57 /apps/mobile/metro.config.js
parent2df08ed08c065e8b91bc8df0266bd4bcbb062be4 (diff)
downloadkarakeep-04572a8e5081b1e4871e273cde9dbaaa44c52fe0.tar.zst
structure: Create apps dir and copy tooling dir from t3-turbo repo
Diffstat (limited to 'apps/mobile/metro.config.js')
-rw-r--r--apps/mobile/metro.config.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/apps/mobile/metro.config.js b/apps/mobile/metro.config.js
new file mode 100644
index 00000000..c5630a83
--- /dev/null
+++ b/apps/mobile/metro.config.js
@@ -0,0 +1,58 @@
+// Learn more: https://docs.expo.dev/guides/monorepos/
+const { getDefaultConfig } = require("expo/metro-config");
+const { FileStore } = require("metro-cache");
+const { withNativeWind } = require("nativewind/metro");
+
+const path = require("path");
+
+module.exports = withTurborepoManagedCache(
+ withMonorepoPaths(
+ withNativeWind(getDefaultConfig(__dirname), {
+ input: "./globals.css",
+ configPath: "./tailwind.config.ts",
+ }),
+ ),
+);
+
+/**
+ * Add the monorepo paths to the Metro config.
+ * This allows Metro to resolve modules from the monorepo.
+ *
+ * @see https://docs.expo.dev/guides/monorepos/#modify-the-metro-config
+ * @param {import('expo/metro-config').MetroConfig} config
+ * @returns {import('expo/metro-config').MetroConfig}
+ */
+function withMonorepoPaths(config) {
+ const projectRoot = __dirname;
+ const workspaceRoot = path.resolve(projectRoot, "../..");
+
+ // #1 - Watch all files in the monorepo
+ config.watchFolders = [workspaceRoot];
+
+ // #2 - Resolve modules within the project's `node_modules` first, then all monorepo modules
+ config.resolver.nodeModulesPaths = [
+ path.resolve(projectRoot, "node_modules"),
+ path.resolve(workspaceRoot, "node_modules"),
+ ];
+
+ return config;
+}
+
+/**
+ * Move the Metro cache to the `node_modules/.cache/metro` folder.
+ * This repository configured Turborepo to use this cache location as well.
+ * If you have any environment variables, you can configure Turborepo to invalidate it when needed.
+ *
+ * @see https://turbo.build/repo/docs/reference/configuration#env
+ * @param {import('expo/metro-config').MetroConfig} config
+ * @returns {import('expo/metro-config').MetroConfig}
+ */
+function withTurborepoManagedCache(config) {
+ config.cacheStores = [
+ new FileStore({ root: path.join(__dirname, "node_modules/.cache/metro") }),
+ ];
+ return config;
+}
+
+
+