插件
在 基础->插件开发
小节,已经介绍了插件开发的方法和注意事项,这里主要是介绍一些为什么开发插件,什么时候开发插件。
业务插件
首先,如果没有插件, Semo
内置的几个命令对大家也没有多大用处,所有的价值都需要通过扩展 Semo
释放,其中插件就是最重要的一种形态。插件里最常见的就是定义命令,这不奇怪,因为 Semo
本身就是个命令,也被设计为命令行开发框架。这里的重点是命令可以定义到插件中,而插件作为独立的 Node 模块可以发布到 npm
或公司自建的 registry
,从而使得一个命令可以被安装到多个项目。
我们很难保证一个项目可以在公司所有的项目中都有用,但是相同业务线的不同项目中是有可能有交集的,我们可以通过对插件名进一步规范来划分插件的适用范围,例如:
semo-plugin-[公司标识]-[业务线标识]-[用途标识]
创新插件
另外,之前的文档中也提到,我们也可以开发非业务属性的插件,只要自己觉得有趣,有想法,都可以试试,例如:
semo-plugin-music-download
semo-plugin-video-download
semo-plugin-todolist
semo-plugin-puzzle-me
semo-plugin-convert-a-to-b
上面只是随便起一些名字,其实这些插件还都不存在。
本地插件
不是所有的插件都必须要发布到 npm
的,我们可以开发很多只有自己知道的插件,满足自己的需求,这种插件一般都是放到 ~/.semo/node_modules
的,这样可以在当前账户的任意位置调用。
社区插件
如果对自己的插件作品很满意,想分享给其他人使用,就可以把插件发布到 npm
上,然后告诉别人来用。当然,由于 Semo
只是充当一个命令调度的作用,其实很大概率上你不必非要基于 Semo
来写这种 npm
包,除非你是 Semo
的粉丝 ^_^。
那么目前都有哪些社区插件了呢,目前的社区还没怎么建起来,插件还比较少,包括但不限于以下插件:(这里的核心指的是放到核心仓库和 @semo/core
一起维护的插件)
- semo-plugin-application,【核心】定义了一个 Node 项目中可以使用的,给项目添加子命令的规范。
- semo-plugin-script,【核心】定义了一个 Node 项目中可以使用的脚本规范。
- semo-plugin-plugin,【核心】提供了 Semo 全局插件管理命令行工具。
- semo-plugin-shell,【核心】提供了一个简单的命令行环境,可以少敲几个字母。
- semo-plugin-hook,【核心】可以查看钩子相关的信息。
- semo-plugin-ssh, 【扩展】提供了简单的
SSH
账户管理功能。 - semo-plugin-read,【扩展】提供了将 URL 转换成
Markdown
,进而转换成各种格式的工具。- semo-plugin-read-extend-format-wechat 这是 read 插件的一个扩展,提供了微信公众号文章在线编辑器的功能,需要和 read 一起使用。
- ... 这里可能有很多相关子插件,就不一一列举了。
- semo-plugin-serve,【扩展】提供了一个简单的
HTTP
服务器的功能,类似于serve
。 - semo-plugin-sequelize, 【扩展】提供了对
Sequelize
的集成以提供数据库的访问能力 - semo-plugin-redis,【扩展】提供了对
Redis
的集成已提供缓存的访问能力