@vxil / cli
这个 Vxil 在一行中启用后端构建块的CLI - config-as-code。包裹是 @vxil/cli 它安装了 vxil 命令-裸 vxil NPM上的Name被阻止了,所以总是安装有作用域的包。它需要Node.js 24或更新版本。
npx @vxil/cli quickstart # create a tenant + scaffold vxil.config.ts
npx @vxil/cli push # apply your config (features, cms collections, functions)
npx @vxil/cli gen # generate a typed client + MCP manifest for YOUR backend
npx @vxil/cli functions dev fn # run a tenant function locally against the remote edge
npx @vxil/cli listen --forward-to localhost:3000/webhook # forward inbound webhook events to your local server
npx @vxil/cli mcp install --client cursor # wire your backend's MCP server into your editor's agent
npx @vxil/cli doctor # keys, URLs, reachability + secrets referenced-vs-stored + per-function hashes
npx @vxil/cli diff --against staging # CI drift gate vs a named slot: exit 0 no drift · 1 drift · 2 error
配置即代码存在于 vxil.config.ts,由 @vxil/config (也被捆绑为 @vxil/cli/config 子路径):
import { defineConfig } from '@vxil/config';
export default defineConfig({
// (a) per-feature config — the same typed manifests the server validates
features: {
auth: { enabled: true },
cms: { enabled: true, draftPublish: true },
// provider 'resend' needs its key: `vxil secrets set RESEND_API_KEY` (or use provider: 'mock' to try it)
notifications: { enabled: true, provider: 'resend', resendApiKeyRef: 'secret:RESEND_API_KEY', fromEmail: '[email protected]' },
},
// (b) CMS schema-as-code — collections + fields, reconciled by `vxil push`
cms: {
collections: {
tasks: {
fields: {
title: { type: 'string', required: true, indexSlot: 's1' },
done: { type: 'bool' },
},
},
},
},
});
动词: init templates quickstart try login link keys account logout invites members projects billing plan push pull diff gen doctor architect versions rollback secrets env seed export import functions listen mcp cms files webhooks search dev payments migrate config users send deliveries api.
vxil quickstart [--features a,b] [--invite <code>] [--env <label>] [--dev [--ttl <h>]] [--no-push] 是前门; vxil api --help 打印操作员备忘单-每一个仪表板动作作为一个 vxil api 线。
每个动词都为它的目标命名。 --dev 选择开发槽位, --target <name> 绑定的命名槽位 vxil link <slug> --as <name> (合并到现有的绑定中,而不是替换它)。选择器是 fail-closed -一个未绑定的插槽退出1,告诉你修复,永远不会落到另一个租户-每个写动词在它起作用之前打印一个目标横幅(slug + env,而不是一个键)。
vxil plan --explain-配置计划与每个叶子标记 宣布 或者 默认的.vxil push [--skip-functions]-应用模式→配置→函数;低于功能计划的项目被停止 在任何东西被推送之前,--skip-functions推动其余部分。vxil diff [--against <target>] [--ignore <k,…>] [--strict-secrets] [--strict-runtime]- CI漂移门;机密仅通过名称进行比较,并且引用但未存储的名称具有信息性,除非--strict-secrets。列出了一个函数,其唯一的区别是平台设置——函数运行时(兼容性日期/标志)或计划的CPU限制reason: runtime <old> → <new>/reason: cpu-limit <old> ms → <new> ms并在门下提供信息(--exit-code/--against:退出0)除非--strict-runtime——平原vxil diff仍然在计算;vxil plan显示了同样的原因,和vxil push在新设置下重新部署它。vxil doctor- preflight:秘密引用vs存储(建议,仅名称)加上每个函数的服务/发布/本地哈希判决。下--jsonstdout是一个JSON文档;通知到stderr。vxil link <slug>-重用已经存储在这台机器上的密钥;--mint如果是新鲜的,--key交一份。vxil keys mint --name <name> --scopes <a,b,c> [--env live|test] [--store]-薄荷 狭窄的 服务器的密钥(本地验证的范围);admin拒绝);键印 一次 To stdout ()--json→{ api_key, key_id, scopes }),除非--store.vxil keys list显示名称,id,范围,创建和最后使用(没有秘密);vxil keys revoke <key_id> [--yes]要求您键入id,并拒绝键入CLI本身正在使用的键,除非--yes。需要一个仪表板会话(vxil login,或在终端提示;一个有管道的/--json运行失败的补救措施,而不是通过--email/--password来编写它,它从不存储会话)。vxil cms drop <collection> [--purge-rows] [--yes]-通过相同的保护ack删除一个集合定义push --allow-destructive使用(行被保留,重新创建将它们带回来;--purge-rows硬删除它们,并且在先前删除的集合上删除其保留的行)。vxil members list|invite|add|rm|uninvite和vxil invites accept <token|url>-从终端绑定项目的团队(您的vxil login会话):通过带有角色的电子邮件邀请、添加现有帐户(以及如何更改角色)、删除(键入的电子邮件、拒绝上一个所有者)、撤销未决邀请、接受邀请。vxil projects list|create|rm和vxil billing status|upgrade --tier <t>-你的项目和绑定项目的计划。projects rm删除您拥有的任何项目后,您键入它的鼻涕虫;billing upgrade打印托管的结帐URL(从不打开浏览器)并降级(--tier free)。vxil files put <path> --user <id>,vxil webhooks sources add|list|rm|test,vxil webhooks events replay|runs,vxil cms bulk-rm <collection> --filter '<json>' [--dry-run],vxil search sync run|reset <key> [--purge],vxil users import <file>- CLI添加原始调用不能添加的操作符操作(来自磁盘的字节,一次打印的接收器URL,键入确认之前的演练,块化批量)。仪表板所做的每件事都是一个功能vxil api线:vxil api --help.vxil gen --offline --check忽略固定的API专业(只有在线生成器知道它们),因此在线生成的vxil.types.ts通过离线门。vxil api <METHOD> <path> ['<json>' | --data '<json>']-任意呼叫/v1路线;在标准输出上显示纯JSON,在标准输出上显示横幅。vxil secrets list --all-projects-跨每个绑定项目的名称和元数据矩阵(值永远不会返回)。vxil migrate payments --from-provider stripe|paddle|paypal|revenuecat (--customers <f.csv> | --all) [--dry-run]-通过服务器同步腿回填订阅;可恢复的。vxil payments simulate --scenario <s> --user <id> [--tier <t>]-仅模拟/dev项目:驱动退款对,跨平台解锁,续期,到期,过期宽限期或转移并检查oracle。
vxil listen --forward-to <url> 轮询租户的入站webhook事件,并根据生产使用的完全相同的交付合同将每个新事件重新发布到您的本地服务器-相同的身体形状,相同的签名 X-Vxil-Jobs-Signature 头(您的真实签名秘密)-因此您在本地测试的处理程序就是您发布的处理程序。 --replay-last <n> 重新转发最近的事件; --raw 单独发布存储的提供程序有效负载。
文档: vxil.com ·仪表板: vxil.com/dashboard
MIT©techmaker.io