Skip to content

项目整合

跟现有业务项目整合是 Semo 开发的初衷,如果一个项目已经有了自定义的用着还不错的命令行工具,那么要慎重考虑要不要换成 Semo 风格的,好在 Semo 整合比较简单,如果项目中之前没有命令行的基础设施,那么推荐尝试 Semo

为什么要整合

  • 获得命令行基础设施,一个项目总有一些操作不适合或者来不及做到后台里,通过一个命令行工具,可以更简单的和系统和数据进行交互。
  • 获得脚本基础设施,总有一些脚本需要执行,脚本起什么名字,放什么位置,以及如何跟业务或者数据进行交互都是常见的需求。
  • 可以使用相关的 Semo 插件,并且通过配置影响和改变插件的行为。
  • 获得一个业务相关的 REPL 环境,可以任意调用项目中封装的方法,或者跟一些封装的基础设施进行交互。

项目整合方式

不一定所有的特性都需要,按需使用即可。

1. 将 Semo 添加为项目依赖

这里以 yarn 为例:

yarn add @semo/cli

2. 在项目根目录进行初始化

semo init [--typescript]

这里看项目是否是基于 Typescript 搭建的,如果是就带上 --typescript 参数。初始化过程会在项目根目录新建一个配置文件 .semorc.yml,并且新增了一个 bin/semo 目录,理论上不会和现有的项目有冲突。

3. 添加一些命令或脚本

semo generate command xxx
semo generate script yyy

4. 定义项目自己的插件

类似于渐进式开发的理念,一个插件如果只是自己的项目中使用,可以将插件作为项目代码的一部分,等优化成熟了,也很容易转成 npm 包的形式与其他项目分享。

semo generate plugin zzz

5. 将业务代码注入到 REPL 环境

参见 插件开发->例子2:实现 hook_repl,可以看到是如何将方法注入到 REPL 的。注意所有的方法都只能注入到 REPL 的 Semo 对象,这是对 REPL 变量空间的保护。如果是业务方法,只要引入,然后按照 hook_repl 的格式要求返回即可。如果要让方法生效,还需要自己去处理方法对环境的依赖,比如连接数据库等。