68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
/** @type {import('next-sitemap').IConfig} */
|
|
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
import {fileURLToPath} from 'url';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
/**
|
|
* Recursively find all MDX files in a directory
|
|
*/
|
|
function findMdxFiles(dir, fileList = []) {
|
|
const files = fs.readdirSync(dir);
|
|
|
|
files.forEach(file => {
|
|
const filePath = path.join(dir, file);
|
|
const stat = fs.statSync(filePath);
|
|
|
|
if (stat.isDirectory()) {
|
|
findMdxFiles(filePath, fileList);
|
|
} else if (file.endsWith('.mdx')) {
|
|
fileList.push(filePath);
|
|
}
|
|
});
|
|
|
|
return fileList;
|
|
}
|
|
|
|
/**
|
|
* Convert file path to URL path
|
|
* Example: content/docs/getting-started/introduction.mdx -> /getting-started/introduction
|
|
*/
|
|
function filePathToUrl(filePath) {
|
|
const contentDocsPath = path.join(__dirname, 'content', 'docs');
|
|
const relativePath = path.relative(contentDocsPath, filePath);
|
|
const withoutExt = relativePath.replace(/\.mdx$/, '');
|
|
|
|
// Convert index.mdx to root path
|
|
if (withoutExt === 'index') {
|
|
return '/';
|
|
}
|
|
|
|
// Convert path separators to forward slashes
|
|
return '/' + withoutExt.split(path.sep).join('/');
|
|
}
|
|
|
|
const config = {
|
|
siteUrl: process.env.NEXT_PUBLIC_WIKI_URI || 'https://docs.useplunk.com',
|
|
generateRobotsTxt: true,
|
|
additionalPaths: async () => {
|
|
const contentDocsPath = path.join(__dirname, 'content', 'docs');
|
|
|
|
// Find all MDX files
|
|
const mdxFiles = findMdxFiles(contentDocsPath);
|
|
|
|
// Convert to sitemap entries
|
|
return mdxFiles.map(filePath => ({
|
|
loc: filePathToUrl(filePath),
|
|
changefreq: 'weekly',
|
|
priority: 0.7,
|
|
lastmod: new Date().toISOString(),
|
|
}));
|
|
},
|
|
};
|
|
|
|
export default config;
|