目前 ABT 节点支持下面这些生命周期钩子:

  • pre-deploy: 在 Blocklet 部署到 ABT 节点前被调用,会在本地执行各种构建工作。如果此生命周期钩子的退出代码非 0,则会退出此次部署
  • post-install: 在 Blocklet 安装结束时被调用,可以在本生命周期钩子中执行一些操作。如果退出代码非 0,安装将失败
  • pre-stop: 在 Blocklet 结束前被调用,可以在这个生命周期钩子中做一些操作,比如退出一些与此 Blocklet 相关的进程。如果此钩子退出代码非 0,将会继续停止,但同时会打印错误日志
  • pre-install: 在 Blocklet 被安装前调用,可以用来检查当前的运行环境符合不符合安装需求。如果此钩子退出代码非 0,这安装将会失败
  • pre-start: 在 Blocklet 启动前会被调用,比如检查当前 Blocklet 依赖的模块是否已经启动等。如果此钩子退出代码非 0,将会不被允许启动,但同时会打印错误日志
  • pre-uninstall: 在 Blocklet 安装前被调用,比如检查当前 Blocklet 依赖的模块是否已经在运行等。如果此钩子退出代码非 0,将会继续安装,但同时会打印错误日志

Hook 文件

如果 Hook 依赖于项目中的文件,需要在 blocklet.json(或者 package.json 中的 blocklet.hookFiles 里) 定义这些文件的相对路径。

异常处理

如果 Blocklet 中有发生异常,可以将其统一处理,以便 ABT 节点更加优雅的处理它们。

如果你的 hook 是用 Node.js 实现的,我们提供了一个 abtnode/js-util 工具来捕捉 unhandledRejectionunhandledRejection 异常,你只需在项目中导入下面的代码:

require('@abtnode/util/lib/error-handler');