Devtools
Devtools 插件开发工具提供了一些 Task 用于辅助 Halo 插件的运行与调试,使用此工具的前提是需要具有 Docker 环境。
Devtools 还提供了一些其他的构建任务,如插件打包、插件检查等。
安装
Devtools 是使用 Java 开发的一个 Gradle 插件,如果你使用的 plugin-starter 创建的插件项目,那么你无需任何操作,它已经默认集成了 Devtools 插件。
你可以在项目的 build.gradle
中找到它:
plugins {
// ...
id "run.halo.plugin.devtools" version "0.3.0"
}
使用说明
当在项目中引入了 devtools
之后,就可以使用一些额外的构建任务来辅助插件的开发,参考 构建任务详解。
例如,正在开发 plugin-starter
插件时,可以通过 haloServer
任务启动 Halo 服务,来测试插件功能:
./gradlew haloServer
看到如下日志时表示 Halo 服务已经启动成功:
=======================================================================
> Halo 启动成功!
访问地址:http://localhost:8090/console?language=zh-CN
用户名:admin
密码:admin
API 文档:http://localhost:8090/swagger-ui.html
插件开发文档:https://docs.halo.run/developer-guide/plugin/introduction
=======================================================================
修改代码后,无需停止服务,只需执行:
./gradlew reload
即可应用改动。如果使用 watch 任务启动插件,则不需要执行 reload
,它会自动监听并重载插件。
配置
可通过 build.gradle
文件中的 halo {}
块自定义 Devtools 启动 Halo 服务必要配置,示例如下:
halo {
version = '2.20'
superAdminUsername = 'admin'
superAdminPassword = 'admin'
externalUrl = 'http://localhost:8090'
docker {
// windows 默认为 npipe:////./pipe/docker_engine
url = 'unix:///var/run/docker.sock'
apiVersion = '1.42'
}
port = 8090
debug = true
debugPort = 5005
}
-
version
:表示要使用的 Halo 版本,随着插件 API 的更新你可能需要更高的 Halo 版本来运行插件,可自行更改。 -
superAdminUsername
: Halo 的超级管理员用户名,当你启动插件时会自动根据此配置和superAdminPassword
为你初始化 Halo 的超级管理员账户。 -
superAdminPassword
:Halo 的超级管理员用户密码。 -
externalUrl
:Halo 的外部访问地址,一般默认即可,但如果修改了端口号映射可能需要修改。 -
docker.url
:用于配置连接 Docker 的 url 信息,在 Mac 或 Linux 系统上默认是unix:///var/run/docker.sock
,在 windows 上默认是npipe:////./pipe/docker_engine
。 -
docker.apiVersion
:Docker 的 API 版本,使用docker version
命令可以查看到,如果你的 Docker 版本过低可能需要更改此配置,示例:➤ docker version
Client:
Version: 24.0.7
API version: 1.43 -
port
:Halo 服务的端口号,如果你的 Halo 服务端口号不想使用默认的8090
或者想使用多个 Halo 服务,可以修改此配置。 -
debug
:是否开启调试模式,开启后会在启动 Halo 服务时会自动开启调试模式,此时你可以使用 IDE 连接到 Halo 服务进行调试。 -
debugPort
:调试模式下的调试端口号,默认是自动分配端口号,你可以修改此配置来固定调试端口号。 -
suspend
:是否在启动时挂起,如果开启则会在启动时挂起直到有调试器连接到 Halo 服务。
由于 Halo 2.20.0 版本更改了初始化和登录流程,如果 halo.version
指定 2.20.x
版本需要将 run.halo.plugin.devtools
版本升级到 0.2.0
及以上。
任务
本插件提供了 haloServer
和 watch
两个任务,使用它们的前提条件是需要在本地配置 Docker 环境。
环境要求
- Windows 和 Mac 用户:可以直接安装 Docker Desktop。
- Linux 用户:请参考 Docker 官方文档 安装 Docker。
确保 Docker 服务已启动后,即可运行 haloServer
和 watch
任务。
工作目录
这两个任务会将 Halo 的工作目录挂载到插件项目的 workplace
目录下,以确保在重启任务时数据不会丢失。