mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
feat(app): add tauri web overlay module resolution
This commit is contained in:
@@ -7,6 +7,10 @@ const projectRoot = __dirname;
|
||||
const monorepoRoot = path.resolve(projectRoot, "../..");
|
||||
const serverSrcRoot = path.resolve(projectRoot, "../server/src");
|
||||
const relaySrcRoot = path.resolve(projectRoot, "../relay/src");
|
||||
const customWebPlatform = (process.env.PASEO_WEB_PLATFORM ?? "")
|
||||
.trim()
|
||||
.replace(/^\./, "")
|
||||
.toLowerCase();
|
||||
|
||||
const config = getDefaultConfig(projectRoot);
|
||||
const defaultResolveRequest = config.resolver.resolveRequest ?? resolve;
|
||||
@@ -25,6 +29,40 @@ config.resolver.nodeModulesPaths = Array.from(
|
||||
])
|
||||
);
|
||||
|
||||
function isLocalModuleImport(moduleName) {
|
||||
return (
|
||||
moduleName.startsWith("./") ||
|
||||
moduleName.startsWith("../") ||
|
||||
moduleName.startsWith("@/") ||
|
||||
path.isAbsolute(moduleName)
|
||||
);
|
||||
}
|
||||
|
||||
function resolveWithCustomWebOverlay(context, moduleName, platform) {
|
||||
const shouldResolveCustomWebVariant =
|
||||
platform === "web" &&
|
||||
customWebPlatform.length > 0 &&
|
||||
customWebPlatform !== "web" &&
|
||||
isLocalModuleImport(moduleName);
|
||||
|
||||
if (shouldResolveCustomWebVariant) {
|
||||
const overlayContext = {
|
||||
...context,
|
||||
// Resolve only "<custom-platform>.<ext>" variants in overlay mode.
|
||||
sourceExts: context.sourceExts.map((ext) => `${customWebPlatform}.${ext}`),
|
||||
preferNativePlatform: false,
|
||||
};
|
||||
|
||||
try {
|
||||
return defaultResolveRequest(overlayContext, moduleName, null);
|
||||
} catch {
|
||||
// Ignore overlay misses and continue with normal web resolution.
|
||||
}
|
||||
}
|
||||
|
||||
return defaultResolveRequest(context, moduleName, platform);
|
||||
}
|
||||
|
||||
config.resolver.resolveRequest = (context, moduleName, platform) => {
|
||||
const origin = context.originModulePath;
|
||||
if (
|
||||
@@ -35,11 +73,11 @@ config.resolver.resolveRequest = (context, moduleName, platform) => {
|
||||
const tsModuleName = moduleName.replace(/\.js$/, ".ts");
|
||||
const candidatePath = path.resolve(path.dirname(origin), tsModuleName);
|
||||
if (fs.existsSync(candidatePath)) {
|
||||
return defaultResolveRequest(context, tsModuleName, platform);
|
||||
return resolveWithCustomWebOverlay(context, tsModuleName, platform);
|
||||
}
|
||||
}
|
||||
|
||||
return defaultResolveRequest(context, moduleName, platform);
|
||||
return resolveWithCustomWebOverlay(context, moduleName, platform);
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"ios": "expo run:ios",
|
||||
"ios:release": "expo run:ios --configuration Release",
|
||||
"web": "expo start --web",
|
||||
"web:tauri": "PASEO_WEB_PLATFORM=tauri expo start --web",
|
||||
"lint": "expo lint",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"test": "vitest run",
|
||||
@@ -21,6 +22,7 @@
|
||||
"test:e2e:ui": "playwright test --ui",
|
||||
"build": "npm run build:web",
|
||||
"build:web": "expo export --platform web",
|
||||
"build:web:tauri": "PASEO_WEB_PLATFORM=tauri expo export --platform web",
|
||||
"deploy:web": "npm run build:web && wrangler pages deploy dist --project-name paseo-app"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
Reference in New Issue
Block a user