const fs = require("node:fs");const path = require("node:path");const { getDefaultConfig } = require("expo/metro-config");const { withUniwindConfig } = require("uniwind/metro"); /** @type {import("expo/metro-config").MetroConfig} */const config = getDefaultConfig(__dirname);const workspaceRoot = path.resolve(__dirname, "../..");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, extraNodeModules: { // oxlint-disable-next-line unicorn/no-useless-fallback-in-spread ...(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", polyfills: { rem: 14 },});
const fs = require("node:fs");
const path = require("node:path");
const { getDefaultConfig } = require("expo/metro-config");
const { withUniwindConfig } = require("uniwind/metro");
/** @type {import("expo/metro-config").MetroConfig} */
const config = getDefaultConfig(__dirname);
const workspaceRoot = path.resolve(__dirname, "../..");
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,
extraNodeModules: {
// oxlint-disable-next-line unicorn/no-useless-fallback-in-spread
...(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",
polyfills: { rem: 14 },
});