类型

Sketch 助手通过构建符合Sketch 助手类型的简单数据结构来定义。

通过确保您的助手严格匹配类型,您可以确保助手与 Sketch 兼容。最好的方法是让 TypeScript 编译器为您完成!

如果您使用我们的Sketch 助手模板创建了助手项目,那么您已经为 TypeScript 做好了准备,并且 Visual Studio Code 等编辑器将提供丰富的类型信息和智能提示,帮助您找到方向。

🙋‍♀️ 了解助手的最佳方式是遵循我们的入门指南,但如果您准备更深入地了解类型,请继续阅读。

AssistantPackage

The AssistantPackage 是顶级类型,它定义了助手 JavaScript 包中预期的默认导出。从根本上说,AssistantPackage 是一个 async 函数,它返回一个 AssistantDefinition

(env: AssistantEnv) => Promise<AssistantDefinition>

该函数是 async,以便您在必要时,在运行助手规则之前执行异步设置工作的机会。

The AssistantEnv 参数包含有关外部环境的信息,包括当前语言区域设置,可用于对助手进行国际化。

💡 请注意,AssistantPackage 也可以是函数数组,这用于支持扩展助手.

AssistantDefinition

AssistantDefinition 是一个简单的对象,它将规则和配置收集在一起。

属性 类型 描述
name string 您的助手包名称,这应该与您 package.json 中的 name 属性完全匹配。
rules RuleDefinition[] RuleDefinition 对象数组
config AssistantConfig 一个对象,您可以在其中打开和关闭规则,以及根据需要使用选项值对其进行配置

💡 额外的助手元数据,如人类可读的 titledescription 定义在 package.json 中,而不是在源代码中。这样可以避免必须执行 JavaScript 才能发现这种助手元数据。查看我们的Sketch 助手模板以了解 package.json 文件的示例,或遵循我们的发布指南以获取更多信息。

RuleDefinition

A RuleDefinition 是一个简单的对象,它完全定义了一个规则。

属性 类型 描述
rule RuleFunction 实现规则逻辑的函数
name string 您规则的唯一标识符,按照惯例以 AssistantDefinition name 为前缀,例如 my-assistant/my-rule
title string
object => string
规则的人类可读标题,或者作为规则配置的函数的标题(允许将选项值插入到字符串中)
description string
object => string
规则的人类可读描述,或者作为规则配置的函数的描述(允许将选项值插入到字符串中)
getOptions? RuleOptionsCreator 使用 JSON Schema 可选地描述规则的配置选项。通过提供模式,您可以增强针对配置错误的选项的错误消息,并使您的助手为可能的未来助手创建 GUI 工作做好准备。请参阅核心助手规则以了解示例
debug? boolean 将规则标记为仅供开发使用
runtime? AssistantRuntime 指示您的规则是否不是跨平台的,并且仅在 Sketch 或 Node 中工作

RuleFunction

A RuleFunction 是一个 async 函数,它使用 RuleContext 参数执行规则的逻辑。

(context: RuleContext) => Promise<void>

💡 您应该能够通过使用 context 参数传入的对象和帮助程序来实现规则,但值得记住的是,您也可以在规则函数中使用 npm 模块 - 只要它们不使用 Sketch 的 JavaScriptCore 环境中不可用的 Node 或浏览器 API 即可。

RuleContext

The RuleContext 对象作为参数传递给每个 RuleFunction。它包含对当前正在处理的 Sketch 文档的表示以及帮助程序函数。

属性 类型 描述
utils RuleUtils 规则帮助程序
file ProcessedSketchFile 当前 Sketch 文档的表示
assistant AssistantDefinition 父助手
env AssistantEnv 传递到顶级 AssistantPackage 函数中的相同对象

RuleUtils

The RuleUtils 对象包含作用域到当前规则的帮助程序函数。

属性 类型 描述
report (string, ...SketchFileObject[]) => void 从当前规则向 Sketch 报告问题。可选地包含一个或多个对存在问题的文档对象的引用
objects IterableObjectCache 一个对象,包含在 Sketch 文档中找到的每种类型对象的迭代器。它支持在规则函数中有效地遍历特定对象类型 - 例如,循环所有画板。从库中导入的对象将被排除在外
foreignObjects IterableObjectCache objects 相同,只是它只迭代从库中导入到 Sketch 文档中的对象
isObjectIgnored SketchFileObject => boolean 确定对象是否已在 Sketch UI 中被忽略。通常,这是为您处理的,但如果您看到规则错误提示您尝试报告被忽略的对象,那么您可能需要使用此函数在调用 report 之前进行手动检查
shouldExitEarly () => boolean 如果您看到性能问题,尤其是在进行昂贵的工作时,请调用此函数来确定您的规则是否应该退出任何循环并提前退出
getOption string => unknown 按名称返回规则选项之一的值。如果在助手配置中缺少选项的值,则会抛出规则错误
getImageMetadata string => Promise<ImageMetadata> 返回当前 Sketch 文档中图像的元数据的函数
getObjectParent SketchFileObject => unknown 返回文档树中对象的父级
getObjectParents SketchFileObject => unknown[] 返回文档树中对象的父级,直到根对象
getObjectPointer SketchFileObject => string 返回文档对象的 RFC 6901 JSON 指针字符串
evalPointer string => unknown 在当前 Sketch 文档的上下文中评估 RFC 6901 JSON 指针