@dbx-tools/cli-服务
添加当前用户服务安装、 生命周期命令、 可选的 UV 管理 Python 依赖性,以及一个指挥官CLI的托盘菜单. 管理命令 在它的终端关闭于macOS,Linux和Windows后继续.
添加服务命令
import { buildServiceCommand } from "@dbx-tools/cli-service/cli";
import { defineService } from "@dbx-tools/cli-service/definition";
import { Command } from "commander";
const program = new Command("example");
program.addCommand(
buildServiceCommand(
defineService(import.meta.url, {
command: { arguments: ["serve"] },
menu: [{ type: "url", label: "Open App", url: "http://127.0.0.1:4400" }],
}),
),
);
await program.parseAsync(process.argv);
defineService 使用自有软件包的名称、版本和默认可执行文件.
使用 command.binName 当软件包有多个可执行条目时。 设定
command.executable 来运行一个已有的外部程序,而不是编译一个
软件包条目。 管理命令默认 NODE_ENV 改为 production。一个
明确 command.environment.NODE_ENV 超过它.
设定 pythonPackage 当编译的服务命令需要 Python 运行时间时 :
defineService(import.meta.url, {
pythonPackage: { name: "example-runtime" },
command: { arguments: ["serve"] },
});
在安装过程中,服务在其下方形成了一个孤立的uv环境
数据目录,在服务版本安装 Python 分布,以及
套装 PYTHON 到那个环境的翻译. pythonPackage.python 选择
python 版本 uv 管理和默认为 3.11.v必须可用于
PATH 安装期间。 卸载此服务会删除环境
与服务拥有的其他数据.
当地项目设施保存了套件的额外和配套依赖性. 离线装置只从 uv 的缓存中解析, 当 a 所需文物没有.
command.options 接受具体选项对象或 Zod 对象
计划 对象序列化其当前值 。 Schemas 剖析 {} 序列化
他们的默认。 布尔值变为正或否定的旗帜,数组变为
重复的旗帜,以及 undefined 数值省略 :
defineService(import.meta.url, {
command: {
arguments: ["serve"],
options: {
host: "127.0.0.1",
port: 4400,
telemetry: false,
},
},
});
安装和管理服务
例如,上述程序:
example service install
example service status
example service logs -- tail -f
example service uninstall
参数后 -- 以附加的服务日志路径运行为命令, 所以
logs -- cat 打印日志和 logs -- tail -f 跟着它.
该服务属于当前用户. 登录启动使用启动代理
macOS,Linux上的一个XDG自动启动条目,而Windows上的一个启动命令. 软件包
输入点用 Bun 编译成版本,每代安装
~/.dbx-tools/bin; Python 环境使用相同的版本生成
服务数据目录,每个主机一代都携带匹配的托盘
可执行文件 。 在 macOS 上安装任何 stale 启动定义, 清除
并启动当前世代,通过
发射完毕 同时期服务安装了服务替换和序列
更新共享运行时间依赖目录.
服务可提供在管理前运行的认证前飞行
命令。 安装时间 waitForAuth 模式默认为 auto:拥有的CLI
决定是否存在适用的认证来源, true 需要飞行前,
财务报告和审定财务报表 false 跳过它。 主机保持对状态的响应并停止请求,同时
飞行前等待.
启动条目不监督主机, 因此主机重新启动飞行前
或管理指挥 当它独自离开,等待 1,2,5,10,30,
然后在连续失败的60分之间。 每次重启都记录在 host.log。 。 。 .
从托盘退出或运行 stop 不重启结束主机.
restart 停止并启动已安装的可执行文件。 它不会重建它.
重新运行 install 更新一个耗用软件包以替换已编译的软件包
可执行文件并更新已保存的配置 .
自定义托盘菜单
默认托盘菜单显示程序名称、版本和要约 Quit。 。 。 .
通过服务定义添加 URL,命令,或分隔项. 自定义
命令项可以在同一处选择软件包二进制或外部可执行文件
作为主要服务指挥.
在向另一个 CLI 添加服务支持时使用此软件包, 这样用户可以得到
同样的安装,生命周期命令,和托盘行为。 生成的
参考用途 <cli> 作为消费程序名称的占地符.
命令参考
<cli> service
安装和管理桌面服务
<cli> service [command]
图标
| 命令 | 说明 |
|---|---|
install [options] | 为当前用户安装并启动服务 |
start | 启动已安装的服务 |
stop | 停止运行服务 |
restart | 重新启动已安装的服务 |
status | 打印服务安装和处理状态为 JSON |
logs [command...] | 打印服务日志路径或将其附加到命令中 |
uninstall | 停止并删除当前用户的服务 |
<cli> service install
为当前用户安装并启动服务
<cli> service install [options]
选项
| 选项 | 说明 |
|---|---|
--start | 安装后启动服务 。 (默认:真实) |
--no-start | 安装后禁用服务 . |
--python-project <value> | 本地 Python 项目已安装, 而不是注册包 . |
--offline | 从 uv 缓存中安装 Python 包而无需网络访问 。 (默认:虚假) |
--no-offline | 禁用从 uv 缓存中安装 python 包而无需网络访问 . |
--wait-for-auth <value> | 认证准备模式:当服务提供适用的认证前飞行时,自动等待,真实需要,而假跳过. (选择:"自发","真","假",默认:"自发") |
<cli> service start
启动已安装的服务
<cli> service start
<cli> service stop
停止运行服务
<cli> service stop
<cli> service restart
重新启动已安装的服务
<cli> service restart
<cli> service status
打印服务安装和处理状态为 JSON
<cli> service status
<cli> service logs
打印服务日志路径或将其附加到命令中
<cli> service logs [command...]
参数
| 参数 | 说明 |
|---|---|
command | 在服务日志路径前运行的命令和参数 |
<cli> service uninstall
停止并删除当前用户的服务
<cli> service uninstall