mpage 是一个 领域无关的插件化 CLI 框架,内置浏览器自动化引擎。基于它,5 分钟可以创建任何领域的 CLI 工具(浏览器、数据库、API、DevOps …)。xbrowser CLI 就是基于它构建的。
分层设计,各司其职
// ① 用 xcli-core 搭起 CLI 框架 import { Core, ok, fail } from '@dyyz1993/xcli-core'; import { z } from 'zod'; const app = new Core({ name: 'my-tool', version: '0.1.0', configDirName: '.my-tool', envPrefix: 'MY_TOOL', pluginDirs: ['./plugins'], }); const site = app.loader.getAPI().createSite({ name: 'builtin', url: 'https://example.com', }); site.command('hello', { description: 'Say hello', args: z.object({ name: z.string().default('World') }), action: async ({ name }) => ok(`Hello, ${name}!`), }); await app.run(process.argv); // ② 想要浏览器能力? 引入 xpage import { executePageCommand } from '@dyyz1993/xpage'; import { chromium } from 'playwright-core'; const browser = await chromium.launch(); const page = await browser.newPage(); await executePageCommand(page, 'goto', { url: 'https://example.com' }); const { title } = await executePageCommand(page, 'title', {}); console.log(title); // "Example Domain"
35+ 页面命令、录制 / 回放、页面结构提取,基于 Playwright-core。
TypeScript 运行时加载(jiti)。命令覆盖 / 增强,支持热重载。
一条命令生成项目,5 种模板覆盖:base / browser / database / api / plugin。
核心设计不绑定浏览器 / 数据库 / API,真正通用的 CLI 框架。
命令参数完全类型安全。Help 文档自动从 schema 生成。
Agent Guard 角色权限控制。生产级 CLI 必备。
PluginStorage 插件数据持久化,CLI 状态可保存。
text / json / yaml 三种输出格式,管道友好。
Codecov 覆盖率跟踪,GitHub Actions CI 全流程。