feat: support subpath deployment with NEXT_PUBLIC_BASE_PATH environment variable
This commit is contained in:
@@ -18,15 +18,28 @@ try {
|
||||
// VERSION file not found
|
||||
}
|
||||
|
||||
// Subpath deployment, e.g. NEXT_PUBLIC_BASE_PATH=/webmail. Read at build time
|
||||
// because Next.js bakes basePath into emitted asset URLs and route metadata.
|
||||
// Trailing slash is stripped; an empty/missing value disables the feature.
|
||||
const rawBasePath = process.env.NEXT_PUBLIC_BASE_PATH?.trim() ?? "";
|
||||
const basePath = rawBasePath.replace(/\/+$/, "");
|
||||
if (basePath && !basePath.startsWith("/")) {
|
||||
throw new Error(
|
||||
`NEXT_PUBLIC_BASE_PATH must start with "/" (got: ${JSON.stringify(rawBasePath)})`
|
||||
);
|
||||
}
|
||||
|
||||
const nextConfig: NextConfig = {
|
||||
output: "standalone",
|
||||
allowedDevOrigins: ["192.168.1.51"],
|
||||
basePath: basePath || undefined,
|
||||
turbopack: {
|
||||
root: import.meta.dirname,
|
||||
},
|
||||
env: {
|
||||
NEXT_PUBLIC_GIT_COMMIT: gitCommitHash,
|
||||
NEXT_PUBLIC_APP_VERSION: appVersion,
|
||||
NEXT_PUBLIC_BASE_PATH: basePath,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user