【发布时间】:2018-02-22 01:18:50
【问题描述】:
目前我在为gatsby-starter-blog 生成 sitemap.xml 时遇到问题。 http://localhost:8000/sitemap.xml 仍然没有找到。
我已经在做什么:
- npm install gatsby-plugin-sitemap
- 添加网站元
siteMetadata: { siteUrl: 'http://www.localhost:8000', }, plugins: [ { resolve: 'gatsby-plugin-sitemap', }, ]
- 这是我的 gatsby-node.js 代码
const sm = require(`sitemap`) //const pages = edge.node.frontmatter.path function pagesToSitemap(pages) { const urls = pages.map((p) => { if (p.path !== undefined) { return { url: p.path, changefreq: 'daily', priority: 0.7 } } }) // remove undefined (template pages) return urls.filter(u => u !== undefined) } function generateSiteMap(pages) { const sitemap = sm.createSitemap({ hostname: 'http://localhost:8000', cacheTime: '60000', urls: pagesToSitemap(pages), }) fs.writeFileSync( `${__dirname}/public/sitemap.xml`, sitemap.toString() ) } exports.onPostBuild = ({pages, callback}) => { generateSiteMap(pages) callback() }
【问题讨论】:
-
这里的文档gatsbyjs.org/docs/creating-a-sitemap 没有指定它仅用于生产/onPostBuild。我在github.com/gatsbyjs/gatsby/pull/10857 进行了文档更新的 PR。