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

Sanity v3项目:sanity.config.js与sanity.json的差异及配置疑问

Sanity V3中sanity.config.js与sanity.json的差异及配置复用问题

1. 两个配置文件的差异

  • sanity.config.js:Sanity V3的默认配置文件,项目初始化时自动生成,采用ES模块语法(import/export),是V3官方推荐的配置方式。它支持编写灵活的逻辑代码,比如动态导入插件、根据环境变量切换配置等,完全适配V3的新架构。
  • sanity.json:是Sanity V1/V2的遗留配置文件,V3项目初始化不会自带。它采用纯JSON格式,依赖旧版的parts扩展系统来配置插件、schema等。在V3中仅用于兼容部分旧版插件或特定遗留场景,并非必需。

2. 已在sanity.config.js中定义的配置是否需要在sanity.json中重复定义?

不需要重复定义,且强烈建议避免重复配置,否则可能引发冲突。
以你提到的plugins为例:

  • 在sanity.config.js中通过plugins: [deskTool()]添加插件,是V3的标准用法,已经完成了插件的注册与配置。
  • 无需再在sanity.json的plugins数组中添加"@sanity/desk-tool"——V3会优先读取sanity.config.js的配置,sanity.json中重复的配置项不会生效。
  • 若你的项目没有依赖任何V1/V2的遗留插件或功能,完全可以删除sanity.json,只保留sanity.config.js即可。

附官方sanity.json示例

{
  "root": true,
  "project": {
    "name": "Movies",
    "basePath": "/studio"
  },
  "api": {
    "projectId": "<yourProjectID>",
    "dataset": "production"
  },
  "plugins": [
    "@sanity/base",
    "@sanity/components",
    "@sanity/default-layout",
    "@sanity/default-login",
    "@sanity/desk-tool",
    "@sanity/google-maps-input"
  ],
  "parts": [
    {
      "name": "part:@sanity/base/schema",
      "path": "./schemas/schema.js"
    }
  ]
}

附项目中sanity.config.js示例

import {defineConfig} from 'sanity'
import {deskTool} from 'sanity/desk'
import {visionTool} from '@sanity/vision'
import {schemaTypes} from './schemas'

export default defineConfig({
  name: 'default',
  title: 'app-title',

  projectId: '<project-id>',
  dataset: 'production',

  plugins: [deskTool(), visionTool()],

  schema: {
    types: schemaTypes,
  },
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:20:38