Open hybridherbst opened 1 year ago
I would also love this, but not sure if anyone is looking into it :)
This can be achieved with a symbolic link. For example, if my public folder is named dist
, I would call:
ln -snf "`pwd`/dist" dist/<basePath> && serve dist
The pwd
call is needed in order to create the link with an absolute path.
Hm, maybe I’m misunderstanding what you mean — the files would still be served without the basePath as part of the URL, right?
@hybridherbst They would be served both with and w/o the base path. For testing local deployments (which is what we're trying to achieve), this should be enough.
I see. So it would explicitly not surface issues related to wrong base path usage (e.g. an accidental reference to toplevel instead of the base path) since the same files would be at root level as well.
I came across the same thing and, in my case I was using Vite. I ended up creating a custom handler and adding some rewrites configs, it's working fine so far.
Example:
const handler = require("serve-handler");
const http = require("http");
const basePath = 'example';
const PUBLIC_PATH = "build";
const server = http.createServer((request, response) => {
return handler(request, response, {
public: PUBLIC_PATH,
rewrites: [
{
source: `/${basePath}/:assets/*.js`,
destination: `/:assets/:0.js`,
},
{
source: `/${basePath}/:assets/*.svg`,
destination: `/:assets/:0.svg`,
},
{ source: `/${basePath}/**`, destination: "/index.html" },
],
});
});
server.listen(3000, () => {
console.log("Running at http://localhost:3000");
});
Description
serve
is great! However, there are a number of scenarios that can't be tested with it, for example vite or sveltekit builds withbasePath
set or deployments to GitHub pages which also require abasePath
.I found this old issue but I think there are more than enough usecases, it's not just an "edge case", so thought it's worth bringing up again: Related to https://github.com/vercel/serve/issues/184
Library version
14.2.1
Node version
v18.13.0