one
Version:
One is a new React Framework that makes Vite serve both native and web.
73 lines (72 loc) • 2.46 kB
JavaScript
import module from "node:module";
import path from "node:path";
function buildOneMetroResolverOverrides({
projectRoot
}) {
const require2 = module.createRequire(projectRoot + "/");
const emptyPath = require2.resolve("@vxrn/vite-plugin-metro/empty", {
paths: [projectRoot]
});
const projectPackagePath = path.join(projectRoot, "package.json");
return defaultConfig => {
const resolver = {
...defaultConfig?.resolver,
extraNodeModules: {
...defaultConfig?.resolver?.extraNodeModules
},
nodeModulesPaths: defaultConfig?.resolver?.nodeModulesPaths,
resolveRequest: (context, moduleName, platform) => {
const defaultResolveRequest = defaultConfig?.resolver?.resolveRequest || context.resolveRequest;
if (moduleName === "react-native-worklets" || moduleName.startsWith("react-native-worklets/")) {
return defaultResolveRequest({
...context,
originModulePath: projectPackagePath
}, moduleName, platform);
}
if (moduleName.endsWith(".css")) {
return {
type: "sourceFile",
filePath: emptyPath
};
}
if (/_middleware.tsx?$/.test(moduleName)) {
return {
type: "sourceFile",
filePath: emptyPath
};
}
if (/\.server(\.[jt]sx?)?$/.test(moduleName)) {
return {
type: "sourceFile",
filePath: emptyPath
};
}
if (moduleName === "react-native-svg") {
const res2 = defaultResolveRequest(context, moduleName, platform);
const svgSrcSuffix = `${path.sep}src${path.sep}index.ts`;
if (res2 && "filePath" in res2 && res2.filePath.includes(svgSrcSuffix)) {
return {
...res2,
filePath: res2.filePath.replace(svgSrcSuffix, `${path.sep}lib${path.sep}commonjs${path.sep}index.js`)
};
}
return res2;
}
const res = defaultResolveRequest(context, moduleName, platform);
if (res && "filePath" in res && /\.server\.[jt]sx?$/.test(res.filePath)) {
return {
type: "sourceFile",
filePath: emptyPath
};
}
return res;
}
};
return {
...defaultConfig,
resolver
};
};
}
export { buildOneMetroResolverOverrides };
//# sourceMappingURL=buildOneMetroResolverOverrides.mjs.map