26 lines
1012 B
JavaScript
26 lines
1012 B
JavaScript
/**
|
|
* Resolve the site's base URL using cascading environment defaults.
|
|
*
|
|
* Preference order: use SITE_URL if set; otherwise derive a GitHub Pages URL from GITHUB_REPOSITORY; otherwise use the local development URL.
|
|
* @returns {string} The resolved site URL (SITE_URL override, or `https://{owner}.github.io/{repo}`, or `http://localhost:3000`).
|
|
*/
|
|
export function getSiteUrl() {
|
|
// Explicit override (works in both local and GitHub Actions)
|
|
if (process.env.SITE_URL) {
|
|
return process.env.SITE_URL;
|
|
}
|
|
|
|
// GitHub Actions: compute from repository context
|
|
if (process.env.GITHUB_REPOSITORY) {
|
|
const parts = process.env.GITHUB_REPOSITORY.split('/');
|
|
if (parts.length !== 2 || !parts[0] || !parts[1]) {
|
|
throw new Error(`Invalid GITHUB_REPOSITORY format: "${process.env.GITHUB_REPOSITORY}". Expected "owner/repo".`);
|
|
}
|
|
const [owner, repo] = parts;
|
|
return `https://${owner}.github.io/${repo}`;
|
|
}
|
|
|
|
// Local development: use dev server
|
|
return 'http://localhost:3000';
|
|
}
|