Merge pull request #14 from Denshooter/d-branch-1

feat(sitemap): update base URL and add build environment handling
This commit is contained in:
Denshooter
2025-02-12 17:59:58 +01:00
committed by GitHub
3 changed files with 30 additions and 4 deletions

View File

@@ -13,9 +13,15 @@ RUN npm install
# Copy the application code
COPY . .
# Set IS_BUILD environment variable for build process
ENV IS_BUILD=true
# Build the Next.js application
RUN npm run build
# Unset IS_BUILD environment variable for runtime
ENV IS_BUILD=false
# Set environmental variable for production mode
ENV NODE_ENV=production
@@ -23,4 +29,4 @@ ENV NODE_ENV=production
EXPOSE 3000
# Run the app with the start script
CMD ["npm", "start"]
CMD ["npm", "start"]s

View File

@@ -1,3 +1,4 @@
// portfolio/app/api/sitemap/route.tsx
import { NextResponse } from "next/server";
interface Project {
@@ -13,7 +14,7 @@ interface SitemapRoute {
lastModified: string;
}
const baseUrl = "http://localhost:3000";
const baseUrl = "https://dki.one";
const generateSitemap = async (): Promise<SitemapRoute[]> => {
try {
@@ -30,6 +31,25 @@ const generateSitemap = async (): Promise<SitemapRoute[]> => {
},
];
// Check if running in build environment
if (process.env.IS_BUILD) {
// Use mock data during build
const mockProjectsData: ProjectsData = {
posts: [
{ slug: "project-1" },
{ slug: "project-2" },
{ slug: "project-3" },
],
};
const projectRoutes: SitemapRoute[] = mockProjectsData.posts.map(
(project) => ({
url: `${baseUrl}/projects/${project.slug}`,
lastModified: new Date().toISOString(),
}),
);
return [...staticRoutes, ...projectRoutes];
}
// Fetch project data from your API
console.log("Fetching project data from API...");
const response = await fetch(`${baseUrl}/api/fetchAllProjects`);

View File

@@ -15,9 +15,9 @@ interface SitemapRoute {
}
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const baseUrl = "http://localhost:3000";
const baseUrl = "https://dki.one";
// Fetch the sitemap data from the dynamic API route
// Fetch the sitemap data from the dynamic API routes
const response = await fetch(`${baseUrl}/api/sitemap`);
if (!response.ok) {
throw new Error(`Failed to fetch sitemap: ${response.statusText}`);