import fs from 'fs' import BLOG from '@/blog.config' export async function generateSitemapXml({ allPages }) { const urls = [{ loc: `${BLOG.LINK}`, lastmod: new Date().toISOString().split('T')[0], changefreq: 'daily' }, { loc: `${BLOG.LINK}/archive`, lastmod: new Date().toISOString().split('T')[0], changefreq: 'daily' }, { loc: `${BLOG.LINK}/category`, lastmod: new Date().toISOString().split('T')[0], changefreq: 'daily' }, { loc: `${BLOG.LINK}/tag`, lastmod: new Date().toISOString().split('T')[0], changefreq: 'daily' }] // 循环页面生成 allPages?.forEach(post => { const slugWithoutLeadingSlash = post?.slug?.startsWith('/') ? post?.slug?.slice(1) : post.slug urls.push({ loc: `${BLOG.LINK}/${slugWithoutLeadingSlash}`, lastmod: new Date(post?.publishDay).toISOString().split('T')[0], changefreq: 'daily' }) }) const xml = createSitemapXml(urls) try { fs.writeFileSync('sitemap.xml', xml) fs.writeFileSync('./public/sitemap.xml', xml) } catch (error) { console.warn('无法写入文件', error) } } /** * 生成站点地图 * @param {*} urls * @returns */ function createSitemapXml(urls) { let urlsXml = '' urls.forEach(u => { urlsXml += ` ${u.loc} ${u.lastmod} ${u.changefreq} ` }) return ` ${urlsXml} ` }