Sketch 47 中引人的库(Library)功能,这次新改变了设团队作方式流程。库设团队维护一设系统或风格指南,起到非常重的作用,可以给团队加高效作体验。
越来越多设计师和团队使用 Sketch 作为主要设计工具,益于众多插件和第三应用,即使在没有技术支持情况下也能解决些常见问题。然而引入大功能时,也会带来很多坑。事实上有些 UI 设计团队领导,是不太注法和流程,这团队选择 Sketch 大多是为了更快速出图,在这样团队设计师要艰辛地踩各坑。
作为一个写 Sketch 插件的计,非常能理解这些问题给队效率带来的响。在 Sketch 47 刚发布,便开始在的 Automate 插件中增加一些库相关的功能,久而久之便对库有了比较深入的了解。这篇文章主要介绍高的息,可以帮助计队更好的使用 Sketch 库,并解决一些复杂问题。如果需要基础教程,请查阅官方文档或其网上的一些文章。
一系列的文章分为上中下三部分,上部主要介绍基础概念和库的托管方案;中部主要针对库管理者,内容包括组件命名、库护等;下部则是针对团中相对高级的库管理者,使用脚决一复问题。
一、基础概念
1. 模版库
模版(Template)库(Library)本质上并无别,都是一个普通的 Sketch 文件,除了低版本(低于 43)Sketch 建立的文件无法直加入库面板中外,任何带有组件(Symbols)的 Sketch 文件都可以直加入库面板。
有时模版特指被加到菜单 「New From Template」 下或显示在 Welcome 界面上的文件。以使用 「Save as Template…」 菜单或者直接将文件复到 「~/Library/Application Support/com.bohemiancoding.sketch3/Templates」 文件夹内。
库则是指被添加 「Preferences – Libraries」 面板下的那些文件,它没有统一保存的地方。
在没有引入库功能,计队使用模板文件来协作,但 Sketch 并未提供一种文档内容更新机制,只能依赖一些插件将文档通过组件名称匹配来替换成另一个文件的组件,但这对组件图层命名要求严格,也没有可视化对比。库功能解决了这种公共内容更新或替换的需求,这一点在队协作中非常重要。
库并没有取代模版的意思,从界面上只能访问到库文档内的组件,也就是库文档内的画板(Artboard)或不在画板内的图,对库际上没有太用处的,有库是程序生成的,种情况组件在画上的位置也没有太讲究。模板文档则带有一例或说明,模板内的组件也以替换成库的外部组件,模板也以为库提供直观的检索、示例演示或者为一个快速搭建界面的框架。
2. 库的类型
内置库(Internal Libraries)是指随 Sketch 自带的库,目前就是 iOS UI Design 个库,文件存在 「/Applications/Sketch.app/Contents/Resources/libraries/iOS UI Design.sketch」,果需要研究个文件需要复到其他地方打开。
户库(User Libraries)就是户从库面上的 「Add Library…」 按钮上添的库。
Sketch 49 以后,增加了一种新的类型,远程库(Remote Libraries),内置的需下载的 Apple iOS UI 也属于这类型。目这功能仅了从 Sketch Cloud 添加库,用户需注册 Sketch Cloud 传文件,分享页面链接给使用者,使用者页面的 「Download – Add Library to Sketch」 单添加到库面板。
这三类型在库板上没有明显视觉区分,可以简单地过右键菜单(或库板左下齿轮图标下菜单)来确认属于哪类型。内库法被移除也法打开,可以被禁用;远程库法使用 「Show in Finder」 和 「Open …」菜单,来自 Sketch Cloud 远程库会有 「View in Sketch Cloud」 菜单;用户库则都有这三个菜单。
这三种库在使用上并没有非常大的差别,只是添加方式不同。来内置库和远程库的组件,使用者无法在库中修改,双击这种组件只有一个选项 「Unlink from Library」。
而来用户库的组件,则有个选项 「Unlink from Library」 和 「Open in Original Document」。可以这理解远程库适集中管理的库,用户无法修改而统一由管理者修改,而用户库则适需要协作修改的库,实际上用户可以操作的只有用户库和远程库种,下文会详细说这种类型的库如何同步。
3. 组件实例、组件母版与库组件
组件母版(Symbol Master)是特殊画板,能够引出另个分身称为组件实例(Symbol Instance),分身有单图层,可能会有不观。组件实例在图层板有两图标,旋转箭头图标表示文档内实例,而索链图标则表示来自库实例,这来自库实例法在前文档改母版,很多情况称为库组件(Library Symbol)。
为了区文档上组件母版和库组件,文档上所有组件母版合称为内部组件(Local Symbols),文档上所有库组件合常叫部组件(Foreign Symbols)或导入组件(Imported Symbols)。
从插入组件的菜上,只能显示出库文档内的所有内部组件,文档内的外部组件是不会出现在菜上的,所以通常情况下作为库的文档都是组件母版。使用了嵌入另一库组件的库组件,如果没载入内嵌库组件所属的库,在 Overrides 中把组件更换成其组件,就只能重新插入来恢复之前的状。在 Sketch 49 之后,未被使用的外部组件在文档保存会被动删除,为了保留外部组件可以插入画布内。
4. 库组件如何从关的库更新
在介绍库更新机制前,需要简了解下 Sketch 内部是如何识别对象的。在 Sketch 中创建的任何对象,新建一个文件、插入一个图层、创建一个式等等,Sketch 都会给这些对象添加唯一标识 UUID。图层上的 UUID 这称为图层 ID,组件上的 UUID 称为 组件 ID(SymbolID),组件母版和组件实例都即有图层 ID 也有 组件 ID。ID 息在界面上没有体现,计使也不会用这些息,它是作为 Sketch 文档结构上使用的。
库组件并非的链接,你将包含外部组件的文档给其他人,并不出现坏链导致文档错误,际上数据存在当前的文档中,所以使用外部组件不使文档积减小,它的优势在更新机。库组件也没有存库的路径,它录库名、库 ID 和组件原始 ID(Remote SymbolID, 组件在它的库中的 SymbolID),库的名称显示在属面板和外部组件管理面板上,库 ID 没有在界面上现出来。
库组件自更,实就是 「库列表」 – 「库 ID」 – 「外组件原始 ID」 这者的联。通过库组件的库 ID,从库面的列表中,按照添的时间从到旧依次检索有未被禁的、链接好的库,直到匹配到库 ID ,然后查该库件是否有与库组件 SymbolID 匹配的组件,如果包含并且容有差异就醒更,更的过程实际上就是容替换。如果这个库件没有与之匹配的组件,还会接着从另一个相同库 ID 的库件检索。如果某个环节没有结果,这个组件就会有示更。较棘手的问题是目前界面并没有地方可处这些系,当这种隐藏的系链现问题,就需要借助特殊的插件,或通过在 「Plugins」 – 「Run Script…」 行特定的脚本来查看信息或处联。
二、开始使用库
1. 建立库
任何 Sketch 文件以当库,对独立的设计师的库管理者,以比随意的创建库,出现情况的能并不大。主要在团协中,库管理者就需要上文的库类型和库组件更新原理,并且清晰库和组件的联系,根据自身团的具情况选择哪一种类型的库,用个库文件还是一个库文件,每个库文件里有哪内部组件。
在 Sketch 中创建组件是可现重复的组件 ID 的,大分问题在库 ID 的管上。从 Sketch 创建一个档,就赋予档一个 ID,这个在这个档被作库时就是库 ID,如果在 Finder 或他非方式复制件,就会导致库 ID 是相同的,如果直接在这个库里的组件母版修改容,会现相同 ID 的库里面包含相同 ID 的组件,当这两个件同时被到库列表中,就会可现库组件联错误或无法更。确保库 ID 重复的方法就是尽量建档。
2. 将组件转为库组件
载入有相的库之后就可把之前的件转换为的外组件形式的档,现在已经有成熟的插件可处这个艰巨的工作。
如果之用的模版文件方式设,且库也原的模版文件,那么这种况下库内的组件 ID 设文档的组件 ID 可以匹配的,可以使用基于 ID 的方式替换。Automate 插件内的 「Symbol – Change Symbols to Library Symbol Base Symbol ID」 功能,选择内部组件实例或组件母版之后,可以批替换制库的相同组件 ID 的库组件。
如需要用到基于组件名称批量替换可以使用以下插件。
- Library Symbol Replacer
- Symbol Swapper
- Move to library
即 ID 也名情况,没法批量处理了,可以使用 Automate 插件内 「Symbol – Replace Symbol with Library Symbol」 功能逐个替换,在替换列表,会把相尺寸或 ID 组件前。
如库组件已经做了较大改变,根据 ID 或名称已经法到理想效,可以在组件右键菜单选择合适库组件替换,最后再使用 Automate 插件内 「Symbol – Remove Unused Symbols」 删除多余组件。
3. 从库步图层和文本样
目前 Sketch 界显示出库文档内部组件,有些保存在库文档资,例如图层样、文本样,甚至色、渐变和图片填充,需要依靠插件步至新文档。
Automate 插件包含从任 Sketch 文件或库倒入文档资源和式的功能。色彩、渐变和图片填充等文档资源是根据内容添加的不会导致列表重复,而式则更加对象的 ID,同 ID 项的式属性会被更新。
Automate 插件样式相关的功能下:
- Style – Import Document Assets from Sketch File,从 Sketch 文件导入色彩、渐变及图片填充等资源。
- Style – Import Text Styles from Sketch File,从 Sketch 文件导文样式。
- Style – Import Layer Styles from Sketch File,从 Sketch 件导入图层样式。
- Library – Import Document Assets from Library,从库导入色彩、渐变及图片填充资源。
- Library – Import Styles from Library,从库导入文本和图层样。
4. 库的托管方案
团队协作中,库管者需要把库件分发给他设计师,设计师需要把库件都入库面,有时还需要设计师配置一些基础设施,如某些 Sketch 插件、字体或者某些第方工具。之后库管者需要有一个机制来通知设计师更库件或自同步。
以下列出一些从低级到高级的方案,可以根据自身团队的况选择合的方案。对库由专人理的团队,了防止设师无意中修改库文件,尽求所设师关闭 Sketch 的自动保存功能。如果库需接受多人协作,则选择版本控制系统方案。
5. 人同
人同指利用邮件或某些传输方式,把库文件打包发给所设师的方法,这一种非常低端的不推荐的方案。实中很多内设团队,可能都会采用这种方案,库的理者问题需注意下,每次发文件时给文件加版本,后记得抄送领导。
上文已经了解到组件更新制,所以设计师收到带不版本号库文件,可以不把这些文件改成前使用名,需要接加入库即可,旧版文件可以从列表上删除或者禁用,保留在列表也不会影响组件更新。
6. 使用链接服务和共享电脑步
macOS 可以连接到些特殊服务和共享电脑,例如 Windows / macOS 共享文件夹、NAS 共享磁盘、FTP 和 WebDAV 等等,详细支持功能可以查看 Apple 官支持文档。搭这服务法也比较简单,可以根据实情况选择。
使用这种方案来同步,没有把库文件发给所有计,实际上所有的计是从同一个共享磁盘目录载入库文件的。这种方案库文件名称必须是固定的,可以通过动或动备的方法记录版本。共享磁盘和 FTP 可以置权限,这可以避免计修改库文件,其类型服可能要考虑其用户写入权限问题。
设计师和库管理者通 Finder 的菜单 「前往」 – 「链接服务器…」,挂载磁盘或链接服务器,不同类型服务的地址,请参考 Apple 官方支持文档。
要决每次开机手动链接服务器的问题,以设置开机自动链接。个设置需要在链接服务器时,勾选 「在我的钥匙串住此密码」。
在 「系统便设置」 – 「用户与群组」 ,选择当前用户的 「登录项」,并将相应的网络硬盘加列表中并持选中。
库管理者将库文件放到网络文件夹中,设计师立即收到更新,此方案需要注意,权问题、版管理和备份等。
7. 使用云盘同步
使用类似 iCloud Drive,Google Drive,Dropbox 等云盘同步,个方案需要考虑改服务的网络问题,是否以文件共享,是否有客户端或系统集成的文件同步,是否有权控等等,最重要的是文件需要同步到地。果处密考虑,则能需要在内网自己搭建例 ownCloud / NextCloud 之类的云盘程序。某云盘服务提供 WebDAV 功能,则以使用上一种方案。
此方案需要注意权限问题、版本管和备份等问题。
8. 使 Sketch Cloud 同步
在 Sketch 49 后将 Sketch Cloud 上的件作为库添,库管者将件上传至 Sketch Cloud,然后通过开放档或着使邮件分享给他设计师,设计师将件添到库之后,库管者每次更件之后,Sketch 会自后台载,他设计师就会收到更醒。
设师法修改库内,自云端的库文件临时存储 「~/Library/Application Support/com.bohemiancoding.sketch3/Libraries」 目录下,临时打可以库面板列表右侧的 QuickLook 图标打预览窗口,再从预览窗口右角的 「Open With Sketch」 按钮打。这文件的修改会被网络的版本自动覆盖。
此案依赖网络,并会涉及项目保密性,适合开放项目,也需要注意版本管理和备份等问题。
Sketch 官方提供了个示例文档。
- Elements UI Kit 添加到库
- macOS UI Library 添加库
9. 使用 Abstract
Abstract 目仅支持 Sketch 文件的版本控制,他包装了一些 Git 版本控制系统的概念流程,提供了一套设师友好的文件新记录、分支、合并功能,采用这方案需所团队员都依赖于 Abstract 平台,并且一套特殊的作方式,需付费能通团队协作功能。类似的服务还 Kactus Plant,通常都需付费的,这种方案合需多人共同理库文件的况。
10. 使用版本控制系统同
使用版本控制系统同库文件,需搭建一版本控制系统服务器,这些公司的可能已搭建好了,些则付费使用一些线服务。另外求团队中的设师比较了解版本控制系统客户端的操作。虽然技求较高,但可以很好的解决权限控制、保密性、版本理问题。
在小型团队或者开放团队,些免费 Git 服务也可以考虑,例如 GitHub、GitLab 或 BitBucket。这些开放项目没有空和团队限制,GitLab 和 BitBucket 免费用户可以使用 5 团队,设计师使用例如 Cornerstone(SVN)、Versions(SVN)、Sourcetree(Git)、Tower(Git)等客户端来接收更新提醒,库管理者也使用客户端上传文件,并在 Web 端控制权限。Web 端管理程序,附带些文档管理、分支管理和问题跟踪等功能,有些甚至可以处理些自动化任务。
利用 GitHub 或 GitLab 等常见的版本控制,通过脚本解 Sketch 文件,按照定的 Git Flow 工作,工编辑 JSON 的方式也可以并文件或解决冲突,只是对库管理者术要求较高。
11. 托管同步
官方工作人员称此功能尚未完善和对外开放。目前从 Apple UI Design Resources 下载的 Sketch 文件就是链至 Apple 官方托管的库,需要从库面板下载内置的 Apple iOS UI。库更新由 Apple 官方维护,使用者可以动收更新。
12. 使用 Sketch 插件同步
Sketch 插件有后下载和提示更新功能,如果将所有的库文件一起包家开发的 Sketch 插件内,也可以做通过插件的更新机制来同步库文件,或通过插件下载库文件,并通过插件动将文件载入库面板中,保证队中所有计使用的文件版本都是一致的。
种方案缺点是对技术要求高,除自动更新和加载库证设计师文件一致,当团中有成和库文件,种方案的优点就更加明显。其他方案将文件分给其他设计师的程出现一问题,例某设计师并没有在 Sketch 中载正确的库文件,或者没有及时更新,另外有设计没有安装正确的字等等问题,以在插件中决。另外插件还以集成一针对团业务特殊需求或是脚手架的功能,用来提高整的工效率。
13. 选择适合团的方案
下表列出各种方案的工方式的简单对比,管理者的操从简单依次至复,从低级至高级。
团队中采用哪种方案托同 Sketch 库,很程度取决于团队员的技水平文化环境。比如团队里的设师很难接受新事,或者设部门费预算,公司不允许将作内传到网络,团队里的设师都不会 Git ,尽如此建议还尽采用较高级的方案。也可以同时采用多方案,让设师根据自身况选择。