You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地Sanity Studio修改内容而不同步至生产站点?

解决Sanity修改内容不自动推生产的问题

1. 先确认本地Studio连对了staging数据集

你之前加了staging数据集但还是推生产,大概率是本地Studio的配置没改对。打开sanity.config.ts(或旧版的sanity.json),把数据集名称改成你的staging:

// sanity.config.ts
export default defineConfig({
  projectId: '你的项目ID',
  dataset: 'staging', // 这里必须写staging,别留着production
  // 其他配置不动
})

改完重启本地Studio服务(sanity start),不然配置不会生效。

2. 让Next.js环境区分数据集

生产站点不能拉staging的数据,得给Next.js加环境变量做区分:

  • 项目根目录建两个文件:.env.local(本地开发用)和.env.production(生产用):
    # .env.local
    NEXT_PUBLIC_SANITY_DATASET=staging
    NEXT_PUBLIC_SANITY_PROJECT_ID=你的项目ID
    
    # .env.production
    NEXT_PUBLIC_SANITY_DATASET=production
    NEXT_PUBLIC_SANITY_PROJECT_ID=你的项目ID
    
  • 然后在Sanity客户端配置里读这些变量:
    // lib/sanity/client.ts
    import { createClient } from 'next-sanity'
    
    export const client = createClient({
      projectId: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID,
      dataset: process.env.NEXT_PUBLIC_SANITY_DATASET,
      apiVersion: '2024-01-01', // 用最新的API版本
      useCdn: process.env.NODE_ENV === 'production',
    })
    
    这样本地开发拉staging的内容,生产环境只拉production的,两边彻底隔离开。

3. 用Sanity草稿模式替代独立数据集(可选)

如果不想搞多个数据集,直接用Sanity的草稿功能也行:

  • 编辑内容时别点“发布”,选“保存为草稿”,这样内容只会存在于草稿区,生产站点不会拉取草稿内容。
  • 还能开内容审核,要发布的内容必须过审才能上线,误操作的概率更低。

4. 检查部署平台的环境变量

要是用Vercel、Netlify这类平台自动部署,得确保生产环境的变量是对的:

  • 在平台的生产环境配置里,把NEXT_PUBLIC_SANITY_DATASET设成production,别和本地的staging搞混。
  • 部署脚本里别加载本地的.env.local,确保生产构建用的是生产环境的变量。

内容的提问来源于stack exchange,提问作者jnemec84

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:40:12