one
Version:
One is a new React Framework that makes Vite serve both native and web.
67 lines (66 loc) • 2.23 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]
});
return defaultConfig => {
const resolver = {
...defaultConfig?.resolver,
extraNodeModules: {
...defaultConfig?.resolver?.extraNodeModules
},
nodeModulesPaths: defaultConfig?.resolver?.nodeModulesPaths,
resolveRequest: (context, 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 defaultResolveRequest2 = defaultConfig?.resolver?.resolveRequest || context.resolveRequest;
const res2 = defaultResolveRequest2(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 defaultResolveRequest = defaultConfig?.resolver?.resolveRequest || context.resolveRequest;
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