const fs = require("node:fs");const path = require("node:path");const { getDefaultConfig } = require("expo/metro-config");const { withUniwindConfig } = require("uniwind/metro");const extraThemes = require("./generated-uniwind-theme-names.json"); /** @type {import("expo/metro-config").MetroConfig} */const config = getDefaultConfig(__dirname);const workspaceRoot = path.resolve(__dirname, "../..");const escapedWorkspaceRoot = workspaceRoot.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");const mobileShikiRoot = path.dirname(require.resolve("shiki/package.json", { paths: [__dirname] }));const resolveShikiDependencyRoot = (packageName) => { const entryPath = require.resolve(packageName, { paths: [mobileShikiRoot] }); let currentDir = path.dirname(entryPath); while (!fs.existsSync(path.join(currentDir, "package.json"))) { const parentDir = path.dirname(currentDir); if (parentDir === currentDir) { throw new Error(`Could not resolve package root for ${packageName}`); } currentDir = parentDir; } return currentDir;}; config.watchFolders = [...new Set([...(config.watchFolders ?? []), workspaceRoot])];config.resolver = { ...config.resolver, blockList: [ ...(Array.isArray(config.resolver?.blockList) ? config.resolver.blockList : config.resolver?.blockList ? [config.resolver.blockList] : []), new RegExp(`${escapedWorkspaceRoot}[/\\\\]\\.t3[/\\\\].*`), ], extraNodeModules: { ...config.resolver?.extraNodeModules, shiki: mobileShikiRoot, "@shikijs/core": resolveShikiDependencyRoot("@shikijs/core"), "@shikijs/engine-javascript": resolveShikiDependencyRoot("@shikijs/engine-javascript"), "@shikijs/engine-oniguruma": resolveShikiDependencyRoot("@shikijs/engine-oniguruma"), "@shikijs/langs": resolveShikiDependencyRoot("@shikijs/langs"), "@shikijs/themes": resolveShikiDependencyRoot("@shikijs/themes"), "@shikijs/types": resolveShikiDependencyRoot("@shikijs/types"), "@shikijs/vscode-textmate": resolveShikiDependencyRoot("@shikijs/vscode-textmate"), },}; module.exports = withUniwindConfig(config, { cssEntryFile: "./global.css", extraThemes, polyfills: { rem: 14 },});
const fs = require("node:fs");
const path = require("node:path");
const { getDefaultConfig } = require("expo/metro-config");
const { withUniwindConfig } = require("uniwind/metro");
const extraThemes = require("./generated-uniwind-theme-names.json");
/** @type {import("expo/metro-config").MetroConfig} */
const config = getDefaultConfig(__dirname);
const workspaceRoot = path.resolve(__dirname, "../..");
const escapedWorkspaceRoot = workspaceRoot.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const mobileShikiRoot = path.dirname(require.resolve("shiki/package.json", { paths: [__dirname] }));
const resolveShikiDependencyRoot = (packageName) => {
const entryPath = require.resolve(packageName, { paths: [mobileShikiRoot] });
let currentDir = path.dirname(entryPath);
while (!fs.existsSync(path.join(currentDir, "package.json"))) {
const parentDir = path.dirname(currentDir);
if (parentDir === currentDir) {
throw new Error(`Could not resolve package root for ${packageName}`);
}
currentDir = parentDir;
}
return currentDir;
};
config.watchFolders = [...new Set([...(config.watchFolders ?? []), workspaceRoot])];
config.resolver = {
...config.resolver,
blockList: [
...(Array.isArray(config.resolver?.blockList)
? config.resolver.blockList
: config.resolver?.blockList
? [config.resolver.blockList]
: []),
new RegExp(`${escapedWorkspaceRoot}[/\\\\]\\.t3[/\\\\].*`),
],
extraNodeModules: {
...config.resolver?.extraNodeModules,
shiki: mobileShikiRoot,
"@shikijs/core": resolveShikiDependencyRoot("@shikijs/core"),
"@shikijs/engine-javascript": resolveShikiDependencyRoot("@shikijs/engine-javascript"),
"@shikijs/engine-oniguruma": resolveShikiDependencyRoot("@shikijs/engine-oniguruma"),
"@shikijs/langs": resolveShikiDependencyRoot("@shikijs/langs"),
"@shikijs/themes": resolveShikiDependencyRoot("@shikijs/themes"),
"@shikijs/types": resolveShikiDependencyRoot("@shikijs/types"),
"@shikijs/vscode-textmate": resolveShikiDependencyRoot("@shikijs/vscode-textmate"),
},
};
module.exports = withUniwindConfig(config, {
cssEntryFile: "./global.css",
extraThemes,
polyfills: { rem: 14 },
});