Next.js13+Contentlayer部署Vercel后,如何动态展示新增GitHub帖子?
问题描述
使用Contentlayer构建页面,通过Vercel展示存储在GitHub上的博客帖子。向GitHub提交新帖子后,站点未重新构建,无法看到新发布的内容。基于Next.js13开发的站点该如何解决?
用户的Contentlayer配置文件:
import { defineDocumentType, makeSource } from 'contentlayer/source-files' export const Post = defineDocumentType(() => ({ name: 'Post', filePathPattern: `**/*.md`, fields: { title: { type: 'string', description: 'The title of the post', required: true, }, subtitle:{ type:'string', description:'The subtitle of the post', required:true, }, date: { type: 'date', description: 'The date of the post', required: true, }, keywords:{ type:'string', description:'Meta Etiketleri', required:true }, description:{ type:'string', description:'Meta Etiketleri', required:true } }, computedFields: { url: { type: 'string', resolve: (post) => `Blog/Yazilar/${post._raw.flattenedPath}`, }, }, })) export default makeSource({ contentDirPath: 'posts', documentTypes: [Post], })
解决方案
Contentlayer是构建时生成静态内容的工具,新帖子提交后必须触发Vercel重新构建才能更新站点,具体解决步骤如下:
1. 开启Vercel与GitHub的自动构建触发
- 进入Vercel对应项目的「Settings」→「Git」页面
- 在「Deployment Branches」中,确认你的目标分支(比如
main)已被设置为触发分支 - 开启「Automatically deploy changes」选项,这样每次向该分支推送代码时,Vercel会自动触发构建
2. 检查package.json的构建脚本
确保build命令先执行Contentlayer的构建,再执行Next.js的构建,否则新帖子不会被Contentlayer解析:
"scripts": { "dev": "contentlayer dev && next dev", "build": "contentlayer build && next build", "start": "next start" }
3. 临时手动触发构建
如果自动构建未生效,可直接在Vercel项目的「Deployments」页面点击「Deploy」按钮,选择对应分支手动触发一次构建,即可更新新帖子内容。
内容的提问来源于stack exchange,提问作者SOSYAL BİLİŞİM
相关产品推荐
相关产品推荐

