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
相关产品推荐
相关产品推荐

