@domandigital/saniity-copy (中文(简体) )
道曼数字屋拷贝查询 三一工作室内部. 每个文档类型 复制规则作为验证 警告,准确的字段 造成它们,包括在可移植文本中。 出版始终是可行的: 复制所有者类型 被建议,从不压倒.
规矩是 COPY.md 内 @domandigital/craft此软件包
只决定文档中哪些字符串是副本, 以及每项发现的位置
属于.
在一个工作室
工作在任何 Sanity工作室,v3 或以后。 只用这个 Rule.custom(), (中文(简体) ),
Rule.warning() 和简单的文件操作功能,并且不从
Sanity,所以没有工作室的版本被固定. 它的测试是针对站台的
那些形状,不是现场演播室。 里面没有特定的地方 两个
步骤 :
pnpm add @domandigital/sanity-copy(或npm,或纱) 在工作室的应用.- 环绕类型数组
sanity.config.ts,见下文.
import { defineConfig } from "sanity";
import { withCopyCheck } from "@domandigital/sanity-copy";
import { schemaTypes } from "./schemas";
export default defineConfig({
// ...
schema: { types: withCopyCheck(schemaTypes) },
});
一个编辑在现场看到:
房屋规则(Em switch):"地方企业-已建". 用全站,逗号, 或者结肠.
为什么包装器不是插件:插件的 schema.types 函数运行前
工作室自己的类型被添加,所以一个插件永远不会看到它们.
选项, 全部可选 :
| 选项 | 默认 | 它会做什么 |
|---|---|---|
excludeTypes | testimonial, (中文(简体) ), review, (中文(简体) ), proofQuote, (中文(简体) ), quote, (中文(简体) ), assist.instruction.context | 从来没有检查过。 一个人的自言自语可以免除每条房屋规则,AI Assistance指示文件是提示而不是复制. |
skipFields | slug, (中文(简体) ), url, (中文(简体) ), href, (中文(简体) ), link, (中文(简体) ), email, (中文(简体) ), phone, (中文(简体) ), language, (中文(简体) ), locale编号、图表 | 从来没有读过任何深度. |
review | true | 显示评论和密度等级以及房屋规则. |
languages | 每种语言 | 只检查这些,例如. ["en"]. 见下文. |
hiddenPaths | 从计划 | 点路径从不读取. withCopyCheck 从每个静态填入 hidden: true。 。 。 . |
读取什么: 字符串、 可移植文本( 块的跨度相接, 所以模板)
横跨图像的文字和标题.
哪些不是: swits, 链接, 引用, enum值, 语言标记, 资产数据,
和田地,计划隐藏 hidden: trueA级 hidden 函数不是
评估:每个文件和每个编辑决定,检查没有办法
要知道巢地的答案, 所以那些田地仍然被读取.
本地化内容
规则为英语. 在本地化的演播室,通过 languages: ["en"] 这么说
其他语言则单独使用("en" 还涵盖 en-GB 财务报告和审定财务报表 en_US) (中文(简体) ). 四个
形状识别:
| 形状 | 示例 | 语言是如何找到的 |
|---|---|---|
| 理智-插图-国际化-阵列v5 | [{ _key: "k8f2a", language: "fr", value }] | 设备 language 字段 |
| 同一插件, v4 和较早的插件 | [{ _key: "fr", value }] | 设备 _key |
| 外地一级的翻译 | { en: "...", fr: "..." } | 当每个密钥是双字母语言标记时 |
| @sanity/ document-internationalization (英语) | { _type: "page", language: "fr" } | 文档 language 字段 |
屏蔽出版(选入)
上面的一切都会发出警告 一间工作室想要执行房屋规则 可以包起来 发布动作,然后在文档有 屏蔽级查找,以查找为工具提示。 审查级别从未 块.
import { withCopyCheck, withCopyGuard } from "@domandigital/sanity-copy";
export default defineConfig({
schema: { types: withCopyCheck(schemaTypes) },
document: {
actions: (prev) => prev.map((a) => (a.action === "publish" ? withCopyGuard(a) : a)),
},
});
原作的动作总是被称作,所以它的行为除了..
disabled 还有工具提示 被排除在外的类型(证词和其余)永远不会
关闭.
搜索整个数据集
npx @domandigital/sanity-copy --project <id> # a public dataset
SANITY_API_TOKEN=... npx @domandigital/sanity-copy --project <id> --types homepage,service
npx @domandigital/sanity-copy --file export.json --json
调查结果按文件和实地开列。 退出 0 个 没有家规, 1个 至少一个, 2个 没有被检查。 读自 环境,永远不要一面旗帜。 它汇报和改变什么.
索赔清单
npx @domandigital/sanity-copy --project <id> --claims
没有样式规则可以说出一个数字是否真实. --claims 列表中
在其字段上持有价格、数字、日期或指定来源的句子,
标记 sourced (资料来源在句子或脚注中注明)或
UNSOURCED。检查每个源,然后源,纠正
或切开. 它总是退出0:一个核对表,而不是一个判决. documentClaims(doc)
代码上也一样.
在代码中
import { checkDocumentCopy, pathToString, describeFinding } from "@domandigital/sanity-copy";
for (const f of checkDocumentCopy(doc)) console.log(pathToString(f.path), describeFinding(f));
没有对疗养的依赖 没有任何工作室的进口品能触及节点 所以是一样的 检查在工作室运行,一个脚本和一个测试.
许可证
阿帕奇2.0 (英语).