# 项目整合

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

# 为什么要整合

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

# 项目整合方式

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

# 1. 将 Zignis 添加为项目依赖

这里以 yarn 为例:

yarn add zignis

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

zignis init [--typescript]

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

# 3. 添加一些命令或脚本

zignis make command xxx
zignis make script yyy

# 4. 定义项目自己的插件

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

zignis make plugin zzz

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

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