运行和测试助手

我们将在 2023 年晚些时候停用助手功能 - 但你仍然可以使用旧版本的 Sketch 或命令行界面来使用它。 了解更多

本指南涵盖了在开发和发布后,在 NodeJS 中运行和测试助手的各种方法。

如我们的 入门 指南中所述,助手可以打包在本地并添加到 Sketch 文档中。但这有一些限制,尤其是在积极开发过程中。例如,像 console.log 和断点调试这样的功能不可用,并且开发反馈循环较慢,因为你需要在每次更改后完全重新编译和重新打包你的助手。

使用 NodeJS 开发和运行你的助手可以帮助缓解这些问题。助手架构从上到下都是 TypeScript,因此在纯粹使用 NodeJS 时没有隐藏的复杂性或陷阱。

测试驱动的助手开发

在积极开发助手时,使用 TDD 方法非常有用,可以让你更有信心助手按预期工作。

💡我们 核心助手 中的每个规则都包含多个测试用例,所以如果你想了解更多信息,可以查看源代码。

如果你已按照 入门 指南操作,那么你的项目将已设置好,可以使用 Jest 运行助手测试。我们在 src/__tests__/index.test.ts 中添加了一个简单的测试

本指南不涉及 Jest 及其 CLI 的解释,但你可以在 watch 模式下运行测试,以便在开发过程中快速反馈。

npm run test --watch

编写测试的思路通常是:

  1. 使用 Sketch 应用程序本身创建一个文档,你希望在对你的规则运行时生成特定结果。
  2. 将 Sketch 文档保存在你的测试旁边。
  3. 编写一个测试来断言你的规则生成预期结果。

@sketch-hq/sketch-assistant-utils 中提供了一些测试辅助方法 -

  • testAssistant 用于运行整个助手
  • testRuleInAssistant 用于单独运行一个助手规则
  • testRule 运行规则而无需父助手

💡助手项目只是普通的 NodeJS 项目,因此你不必使用 Jest 或我们在入门项目中开发的工具链 - 整个 NodeJS 生态系统以及你喜欢的工具和方法都可供你使用。

CLI

助手 CLI 可用于从 Sketch 文档中完全在命令行上收集助手结果。

使用 Sketch 助手工具

或者,你可以使用 @sketch-hq/sketch-assistant-utils 包从任何 NodeJS 应用程序中调用助手。CLI 和 Sketch 应用程序本身中的助手运行器使用相同的函数,因此可以保证一致的结果。

下面是一个不完整的示例,展示了如何从磁盘上的 Sketch 文档运行单个助手。该包导出完整的 TypeScript 类型,因此对 API 的进一步探索留给读者练习。

import { runAssistant } from '@sketch-hq/sketch-assistant-utils'

runAssistant({
  processedFile,
  assistant,
  env,
  cancelToken,
  getImageMetadata,
  ignoreConfig,
  ruleTimeout,
})
  .then((res) => {
    // Handle success
  })
  .catch((err) => {
    // Handle error
  })