@gxp-dev/tools 2.0.62 → 2.0.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/runtime/vite.config.js +26 -3
package/package.json
CHANGED
package/runtime/vite.config.js
CHANGED
|
@@ -140,17 +140,40 @@ export default defineConfig(({ mode }) => {
|
|
|
140
140
|
name: "runtime-files",
|
|
141
141
|
configureServer(server) {
|
|
142
142
|
server.middlewares.use((req, res, next) => {
|
|
143
|
-
// Serve runtime index.html for root requests
|
|
143
|
+
// Serve runtime index.html for root requests and SPA navigation requests
|
|
144
|
+
// (unless local index.html is opted in). SPA fallback is required so
|
|
145
|
+
// client-side routers (e.g. vue-router createWebHistory) can handle
|
|
146
|
+
// deep links when no physical index.html exists at the project root.
|
|
147
|
+
const rawUrl = req.url || "";
|
|
148
|
+
const urlPath = rawUrl.split("?")[0];
|
|
149
|
+
const accept = req.headers.accept || "";
|
|
150
|
+
const isGetOrHead = req.method === "GET" || req.method === "HEAD";
|
|
151
|
+
const isInternalPath =
|
|
152
|
+
urlPath.startsWith("/@") ||
|
|
153
|
+
urlPath.startsWith("/__") ||
|
|
154
|
+
urlPath.startsWith("/node_modules/") ||
|
|
155
|
+
urlPath.startsWith("/src/") ||
|
|
156
|
+
urlPath.startsWith("/dev-assets/") ||
|
|
157
|
+
urlPath.startsWith("/api-proxy/");
|
|
158
|
+
const hasExtension = path.extname(urlPath) !== "";
|
|
159
|
+
const isSpaNavigation =
|
|
160
|
+
isGetOrHead &&
|
|
161
|
+
!isInternalPath &&
|
|
162
|
+
!hasExtension &&
|
|
163
|
+
accept.includes("text/html");
|
|
164
|
+
|
|
144
165
|
if (
|
|
145
166
|
!useLocalIndex &&
|
|
146
|
-
(
|
|
167
|
+
(urlPath === "/" ||
|
|
168
|
+
urlPath === "/index.html" ||
|
|
169
|
+
isSpaNavigation)
|
|
147
170
|
) {
|
|
148
171
|
const runtimeIndexPath = path.join(runtimeDir, "index.html");
|
|
149
172
|
if (fs.existsSync(runtimeIndexPath)) {
|
|
150
173
|
// Read and transform the runtime index.html
|
|
151
174
|
server
|
|
152
175
|
.transformIndexHtml(
|
|
153
|
-
|
|
176
|
+
rawUrl,
|
|
154
177
|
fs.readFileSync(runtimeIndexPath, "utf-8")
|
|
155
178
|
)
|
|
156
179
|
.then((html) => {
|