diff options
| author | xuatz <xzlow10@gmail.com> | 2025-08-20 16:49:19 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-20 08:49:19 +0100 |
| commit | df6814f292f56aa0f650af3d093ba1ca7f159726 (patch) | |
| tree | 55fcb5c2d57076576e058f172028dca7b3523249 /apps/mobile/metro.config.js | |
| parent | 6e525eb1bc9e3f4a1284893dd51a826540e7a6ba (diff) | |
| download | karakeep-df6814f292f56aa0f650af3d093ba1ca7f159726.tar.zst | |
fix(mobile): remove type: module so expo works (#1846)
Diffstat (limited to 'apps/mobile/metro.config.js')
| -rw-r--r-- | apps/mobile/metro.config.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/apps/mobile/metro.config.js b/apps/mobile/metro.config.js new file mode 100644 index 00000000..f9679cb2 --- /dev/null +++ b/apps/mobile/metro.config.js @@ -0,0 +1,57 @@ +// 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( + // eslint-disable-next-line no-undef + 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) { + // eslint-disable-next-line no-undef + 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 = [ + // eslint-disable-next-line no-undef + new FileStore({ root: path.join(__dirname, "node_modules/.cache/metro") }), + ]; + return config; +} |
