doesitarm/helpers/api/sitemap/build.js
Sam Carlton 8c4700c7ea Include astro template urls in sitemap
getUrlsForAstroDefinedPages
2022-06-11 18:49:19 -05:00

54 lines
1.5 KiB
JavaScript

import glob from 'fast-glob'
import { simpleSitemapAndIndex } from 'sitemap'
import {
sitemapLocation
} from '~/helpers/constants.js'
import { getSiteUrl } from '~/helpers/url.js'
const astroPageTemplatePath = './src/pages'
export async function getUrlsForAstroDefinedPages () {
const siteUrl = getSiteUrl()
const filesPaths = await glob( `${ astroPageTemplatePath }/**/*.astro` )
const urls = []
for ( const filePath of filesPaths ) {
const urlPath = filePath
.replace( astroPageTemplatePath, '' )
.replace( '.astro', '' )
.replace( '/index', '/' )
// Skip any paths for templates that include '['
if ( urlPath.includes( '[' ) ) continue
console.log( 'urlPath', urlPath )
// Create a new url object from the site url and the path
const url = new URL( urlPath, siteUrl )
urls.push( url.pathname )
}
return urls
}
export async function saveSitemap ( sitemapUrls ) {
await simpleSitemapAndIndex({
hostname: process.env.PUBLIC_URL,
destinationDir: sitemapLocation,
gzip: false,
// [{ url: '/page-1/', changefreq: 'daily'}, ...],
sourceData: sitemapUrls.map( url => {
return {
url,
// Google doesn't care about changefreq and priority - https://www.seroundtable.com/google-priority-change-frequency-xml-sitemap-20273.html
// changefreq: 'daily'
}
}),
})
}