您的第一个插件

目录

  1. 入门

    1. 插件基础
    2. 您的第一个插件
    3. 开发环境
    4. 调试
    5. Action API
    6. 发布插件
  2. 高级

    1. 插件捆绑
    2. 插件,脚本和命令
    3. 插件位置
    4. 更多关于CocoaScript
    5. SketchTool

本文档将带您创建您的第一个Sketch插件(“Hello World”),并将解释Sketch的基本扩展性概念。

在本演练中,您将向Sketch添加一个新命令,该命令将显示一个简单的“Hello World”消息。在稍后的演练中,您将与Sketch画布交互并查询用户当前选定的图层。

先决条件

您需要安装Node.js并且可以使用它$PATH。Node.js包括npm,Node.js包管理器,它将用于安装Sketch插件开发人员的工具链。

生成一个新的插件

将自己的功能添加到Sketch的最简单方法是通过添加命令。一个命令注册一个回调函数,该函数可以从插件菜单或键绑定中调用。

我们编写了一个小工具链,skpm以帮助您入门。安装skpm并搭建一个新的插件:

$ npm install -g skpm

$ skpm create my-plugin

$ cd my-plugin

运行你的插件

  • 构建插件: npm run build
  • 启动Sketch,打开文档
  • 选择Plugins> my-plugin>My Command
  • 恭喜!您刚刚创建并执行了您的第一个Sketch命令!

插件的结构

运行后,生成的插件应该具有以下结构:

.
├── .gitignore
├── README.md
├── src                         // sources
│   ├── manifest.json           // plugin's manifest
│   └── my-command.js           // source code of the command
├── node_modules
│   └── skpm                    // the sketch plugin developer toolchain
├── my-plugin.sketchplugin      // compilation output, the actual plugin
│   └── Contents
│       ├── Resources
│       └── Sketch
│           ├── manifest.json
│           └── my-command.js
└── package.json

让我们通过所有这些文件的目的,并解释他们做了什么:

插件清单: manifest.json

  • 每个Sketch插件必须有一个描述它及其功能的manifest.json文件。
  • Sketch在启动过程中读取此文件。
  • 请阅读manifest.json 清单参考以获取更多信息。

package.json

如果您之前查看过nodejs包,则必须熟悉它package.json。它描述了你的包(在这种情况下是插件)的依赖关系,并包含一些关于它的元数据。

你会注意到一个特殊的领域:skpm。你可以在这里指定关于你的插件的元数据(而不是在这里manifest.json)。作为一个经验法则,我通常会manifest.json在将所有其他信息放入时将相关命令的信息放入package.json(skpm将在编译时将这些信息添加到manifest.json中,以便您不必复制它们)。

src/my-command.js

这是一个插件命令定义的地方。它被引用manifest.json并且必须导出一个函数。

一个简单的改变

在中src/my-command.js,尝试替换命令实现以显示所选图层的数量:

export default function(context) {
  const selectedLayers = context.selection
  const selectedCount = selectedLayers.length

  if (selectedCount === 0) {
    context.document.showMessage('No layers are selected.')
  } else {
    context.document.showMessage(`${selectedCount} layers selected.`)
  }
}

通过运行重新构建插件npm run build。打开一个Sketch文档,选择一些图层。当您运行my-plugin命令时,您现在应该可以看到所选图层的数量。

专业提示:您可以通过运行自动重建插件 npm run watch

发布您的扩展

阅读关于如何共享插件

下一步

在这个演练中,我们看到了一个非常简单的插件。

如果您想更详细地了解插件API,请尝试以下主题:

原文:https://developer.sketchapp.com/guides/first-plugin/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355