如何让脚本或 AI Agent 用 --json 与 --config 稳定调用 Pake 打包? 如何让脚本或 AI Agent 用 --json 与 --config 稳定调用 Pake 打包【免费下载链接】Pake Turn any webpage into a desktop app with one command.项目地址: https://gitcode.com/GitHub_Trending/pa/Pake当脚本或 AI Agent 需要自动完成 Pake 打包——把一个 URL、本地 HTML 文件或静态构建目录变成 macOS / Windows / Linux 桌面安装器时交互式提示和人工阅读终端输出都不可靠。Pake CLI 为此提供了两个面向自动化的特性--config从声明式 JSON 配置文件加载参数未知字段、错误类型、越界数值都会快速失败--json把所有日志移到 stderr 并让 stdout 恰好输出一个可解析的 JSON 结果对象。本文按仓库文档说明给出安装 CLI、编写配置、脚本化调用以及用退出码与 JSON 结果判定成败的完整路径。1. 准备环境与安装 CLIdocs/cli-usage.md 列出的前置条件Node.js ≥20.0.0推荐 22.0 或更高llms.txt中给出的版本线为 20.9Rust ≥1.85.0缺失时 CLI 会自动安装macOS / Linux 上依赖系统的curl、wget、file、tar用于依赖管理。安装命令任选其一pnpm install -g pake-cli # 或 npm install -g pake-cli遇到权限问题时文档给出两条替代路径用npx免全局安装运行或永久修改 npm 全局前缀# 方式一免全局安装[url] [options] 为占位符替换为实际参数 npx pake-cli [url] [options] # 方式二永久修改 npm 全局安装前缀 npm config set prefix ~/.npm-global echo export PATH~/.npm-global/bin:$PATH ~/.bashrc source ~/.bashrc注意方式二会修改当前用户 shell 的全局 npm 前缀与 shell 配置文件影响所有全局安装的 npm 包确认遇到权限问题后再执行。安装后用文档中列出的版本选项验证pake --version2. 编写声明式配置文件 app.json--config从 JSON 配置文件加载参数字段为 CLI 选项的 camelCase 名称另外支持url。完整字段、类型与取值范围见 schema/pake.schema.jsonJSON Schema draft-07additionalProperties: false。一个最小配置文档中的示例{ url: https://example.com, name: MyApp, width: 1280, hideTitleBar: true }文档示例中还展示了可选的$schema字段指向 Pake 配置 schema该 schema 文件即本仓库的 schema/pake.schema.json用于编辑器校验不影响打包行为。对自动化调用而言下面这些规则决定了失败是否会提前暴露均来自文档与仓库测试 tests/unit/config-file.test.ts 的断言显式 CLI 参数永远覆盖配置字段脚本可以不改文件做一次性覆写未知字段快速失败报错会指明字段名例如name拼成nmae会得到Unknown config field nmae类型错误按期望类型报错例如basicAuth写成字符串时报basicAuth must be of type boolean越界数值被拒绝例如zoom允许 50–200zoom: 1000报zoom must be a finite number (50-200)width: -5下限 0同样失败配置文件不存在或 JSON 损坏时以INVALID_INPUT错误快速失败调用类标志--json、--config、--version仅限命令行使用写进配置文件如json: true会被拒绝相对路径的url相对于当前工作目录解析而不是配置文件所在目录。脚本中应确保启动目录符合预期或在配置里写绝对路径位置参数形式的url会覆盖配置中的url字段schema 中的描述。这些快速失败意味着配置写错时脚本得到的是退出码 2INVALID_INPUT而不是一个参数错误的包——这正是用--config而不是在脚本里拼接一长串 flag 的主要收益。3. 在脚本中调用主路径就是一条命令pake --config app.json --json--json的行为契约docs 与llms.txt的 Agent contract 一致stdout 恰好输出一个 JSON 结果对象。仓库测试 tests/unit/json-output.test.ts 断言 stdout 只有一次写入、内容可被JSON.parse解析且以换行结尾所有日志走 stderrstdout 可以直接管道给解析器交互式提示被禁用当 stdin 不是 TTY 时提示同样不会发生Agent 不会因等待输入而挂起。需要临时覆写某个参数时直接在命令行追加显式参数即可例如把窗口宽度改成 1400pake --config app.json --width 1400 --json由于“显式 CLI 参数永远覆盖配置字段”覆写是确定性的。全部选项可用pake --help查看完整参考见 docs/cli-usage.md。4. 结果验证JSON 结果与退出码成功时 stdout 的 JSON 结构下面为文档示例其中的path、sizeBytes为文档中的示例值不是固定预期{ ok: true, name: MyApp, platform: darwin, arch: arm64, outputs: [{ path: /abs/MyApp.dmg, sizeBytes: 5242880, format: dmg }], warnings: [], error: null }失败时error携带{code, message, hint}其中hint说明修复方式文档示例{ ok: false, error: { code: ENV_MISSING, message: ..., hint: ... } }退出码docs 原文退出码含义0成功2输入无效INVALID_INPUT3构建失败BUILD_FAILED4环境或依赖缺失、依赖安装失败ENV_MISSING例如 Rust 未安装、包安装失败1意外错误UNEXPECTED错误码集合为INVALID_INPUT、ENV_MISSING、BUILD_FAILED、UNEXPECTED外加NETWORK保留当前版本把网络失败归到阶段码下报告例如ENV_MISSING或BUILD_FAILED。脚本可以据此断言退出码 0 表示成功非 0 时解析 stdout 的 JSON按error.code分支处理并把error.hint记入日志或交给 Agent 自行修复。Linux 多目标构建的特殊情况当使用--targets deb,appimage这类多格式构建时ok可以为 true 而outputs少于请求的格式——某个目标失败而其他成功时失败目标出现在warnings中不算整体失败。因此请求多个格式时脚本应对照outputs[].format与请求的格式列表核验而不是假设一一对应。5. 平台注意点与限制macOS 默认产出 DMG 安装器自动化测试若需要.appbundle 以避免用户交互设置环境变量PAKE_CREATE_APP1docs 中的说明。首次打包会因环境配置耗时较长脚本的超时设置应预留余量docs 原文提醒 first packaging might take some time。输出格式由--targets指定Linux 为deb/appimage/rpm/zst及对应-arm64变体Windows 为x64/arm64macOS 为intel/apple/universal/app/dmg默认取平台安装器格式。该契约由仓库测试固化tests/unit/json-output.test.ts 断言退出码映射、stderr 日志路由与单行 JSON 输出tests/unit/config-file.test.ts 断言配置校验行为。升级 pake-cli 版本后可参考这两个测试确认契约是否变化。如果还需要确认某个字段是否可用以pake --help的输出和 docs/cli-usage.md 为准配置字段的类型与范围以 schema/pake.schema.json 为准。【免费下载链接】Pake Turn any webpage into a desktop app with one command.项目地址: https://gitcode.com/GitHub_Trending/pa/Pake创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考