类型
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 |
一个对象,您可以在其中打开和关闭规则,以及根据需要使用选项值对其进行配置 |
💡 额外的助手元数据,如人类可读的
title
和description
定义在 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 指针 |