one
Version:
One is a new React Framework that makes Vite serve both native and web.
46 lines (45 loc) • 1.74 kB
JavaScript
import path from "node:path";
import { buildMetroConfigInputFromViteConfig } from "@vxrn/vite-plugin-metro";
import { getViteMetroPluginOptions } from "./getViteMetroPluginOptions.mjs";
import { loadUserOneOptions } from "../vite/loadConfig.mjs";
async function loadUserViteMetroOptions(projectRoot) {
const previousCwd = process.cwd();
const previousIsVxrnCli = process.env.IS_VXRN_CLI;
try {
process.chdir(projectRoot);
process.env.IS_VXRN_CLI = "true";
return await loadUserOneOptions("build", true);
} finally {
process.chdir(previousCwd);
if (previousIsVxrnCli === void 0) {
delete process.env.IS_VXRN_CLI;
} else {
process.env.IS_VXRN_CLI = previousIsVxrnCli;
}
}
}
async function withOne(baseConfigOrProjectRoot, options = {}) {
const projectRoot = path.resolve(typeof baseConfigOrProjectRoot === "string" ? baseConfigOrProjectRoot : options.projectRoot ?? process.cwd());
const loaded = options.loadViteConfig === false ? void 0 : await loadUserViteMetroOptions(projectRoot);
const metroPluginOptions = loaded?.metroOptions ?? getViteMetroPluginOptions({
projectRoot,
relativeRouterRoot: options.routerRoot ?? "app",
ignoredRouteFiles: options.ignoredRouteFiles,
linking: options.linking,
setupFile: options.setupFile
});
const viteConfig = {
...loaded?.config?.config,
root: path.resolve(loaded?.config?.config?.root ?? projectRoot)
};
const {
defaultConfig
} = await buildMetroConfigInputFromViteConfig(viteConfig, {
...metroPluginOptions,
mainModuleName: "one/metro-entry"
});
return defaultConfig;
}
var withOne_default = withOne;
export { withOne_default as default, withOne };
//# sourceMappingURL=withOne.mjs.map