# 插件

基础->插件开发 小节,已经介绍了插件开发的方法和注意事项,这里主要是介绍一些为什么开发插件,什么时候开发插件。

# 业务插件

首先,如果没有插件, Zignis 内置的几个命令对大家也没有多大用处,所有的价值都需要通过扩展 Zignis 释放,其中插件就是最重要的一种形态。插件里最常见的就是定义命令,这不奇怪,因为 Zignis 本身就是个命令,也被设计为命令行开发框架。这里的重点是命令可以定义到插件中,而插件作为独立的 Node 模块可以发布到 npm 或公司自建的 registry,从而使得一个命令可以被安装到多个项目。

我们很难保证一个项目可以在公司所有的项目中都有用,但是相同业务线的不同项目中是有可能有交集的,我们可以通过对插件名进一步规范来划分插件的适用范围,例如:

zignis-plugin-[公司标识]-[业务线标识]-[用途标识]

# 创新插件

另外,之前的文档中也提到,我们也可以开发非业务属性的插件,只要自己觉得有趣,有想法,都可以试试,例如:

zignis-plugin-music-download
zignis-plugin-video-download
zignis-plugin-todolist
zignis-plugin-puzzle-me
zignis-plugin-convert-a-to-b

上面只是随便起一些名字,其实这些插件还都不存在。

# 本地插件

不是所有的插件都必须要发布到 npm 的,我们可以开发很多只有自己知道的插件,满足自己的需求,这种插件一般都是放到 ~/.zignis/node_modules 的,这样可以在当前账户的任意位置调用。

# 社区插件

目前我已知的插件一部分是开源的,一部分是公司内部仓库的,现在把开源的插件列出来,供大家参考。

  • zignis-plugin-ssh: 一个管理 SSH 账户的插件,支持添加,列表,删除,搜索,登录等操作
  • zignis-plugin-serve: 一个 Web 服务插件,支持静态资源也支持动态接口,基于 Koa
  • zignis-plugin-zhike: 整合了公司的基础设施,其中鉴权是走的是配置管理服务,这个插件只负责自动连接和暴露方法
  • zignis-plugin-zhike-dingtalk: 整合了钉钉的 Webhook,可以快速给钉钉群发消息
  • zignis-plugin-read: 借助各种开源项目实现的把一个网页主体转成各种各样常用的格式