mirror of
https://github.com/getpaseo/paseo.git
synced 2026-08-14 12:23:16 +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 monorepoRoot = path.resolve(projectRoot, "../..");
|
||||||
const serverSrcRoot = path.resolve(projectRoot, "../server/src");
|
const serverSrcRoot = path.resolve(projectRoot, "../server/src");
|
||||||
const relaySrcRoot = path.resolve(projectRoot, "../relay/src");
|
const relaySrcRoot = path.resolve(projectRoot, "../relay/src");
|
||||||
|
const customWebPlatform = (process.env.PASEO_WEB_PLATFORM ?? "")
|
||||||
|
.trim()
|
||||||
|
.replace(/^\./, "")
|
||||||
|
.toLowerCase();
|
||||||
|
|
||||||
const config = getDefaultConfig(projectRoot);
|
const config = getDefaultConfig(projectRoot);
|
||||||
const defaultResolveRequest = config.resolver.resolveRequest ?? resolve;
|
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) => {
|
config.resolver.resolveRequest = (context, moduleName, platform) => {
|
||||||
const origin = context.originModulePath;
|
const origin = context.originModulePath;
|
||||||
if (
|
if (
|
||||||
@@ -35,11 +73,11 @@ config.resolver.resolveRequest = (context, moduleName, platform) => {
|
|||||||
const tsModuleName = moduleName.replace(/\.js$/, ".ts");
|
const tsModuleName = moduleName.replace(/\.js$/, ".ts");
|
||||||
const candidatePath = path.resolve(path.dirname(origin), tsModuleName);
|
const candidatePath = path.resolve(path.dirname(origin), tsModuleName);
|
||||||
if (fs.existsSync(candidatePath)) {
|
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;
|
module.exports = config;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
"ios": "expo run:ios",
|
"ios": "expo run:ios",
|
||||||
"ios:release": "expo run:ios --configuration Release",
|
"ios:release": "expo run:ios --configuration Release",
|
||||||
"web": "expo start --web",
|
"web": "expo start --web",
|
||||||
|
"web:tauri": "PASEO_WEB_PLATFORM=tauri expo start --web",
|
||||||
"lint": "expo lint",
|
"lint": "expo lint",
|
||||||
"typecheck": "tsc --noEmit",
|
"typecheck": "tsc --noEmit",
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
@@ -21,6 +22,7 @@
|
|||||||
"test:e2e:ui": "playwright test --ui",
|
"test:e2e:ui": "playwright test --ui",
|
||||||
"build": "npm run build:web",
|
"build": "npm run build:web",
|
||||||
"build:web": "expo export --platform 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"
|
"deploy:web": "npm run build:web && wrangler pages deploy dist --project-name paseo-app"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
Reference in New Issue
Block a user