平台 SDK
后端+基础设施平台工具包.
pf 脚手架现实世界平台:后端服务,事件驱动信息,基础设施. 全部接通并保持同步.
快速启动 二. 支助 教学 二. 支助 图标 二. 支助 部署
QQ 快速启动
# With Bun
bun add -g @crossdelta/platform-sdk
# With npm
npm install -g @crossdelta/platform-sdk
# Or auto-install (macOS/Linux/WSL)
curl -fsSL https://unpkg.com/@crossdelta/platform-sdk@latest/install.sh | bash
视窗用户 : 使用 WSL 维基月球 对于最佳的经验.
然后创建您的第一个平台:
pf new workspace my-platform -y && cd my-platform
pf dev
| ✅ | 带有 Biome 林定的涡轮平面 |
| ✅ | NATS + JetStream 用于事件驱动信件 |
| ✅ | 准备部署的普鲁米基础设施 |
| ✅ | 自动生成 .env.local 有服务端口 |
5分教学
增加两个服务,并在它们之间连接一个事件:
# 1. Create two services
pf new hono-micro services/orders
pf new hono-micro services/notifications
# 2. Wire an event from orders → notifications
pf cloudevents add order.created --service services/notifications
# 3. Restart to pick up new services
pf dev
# 4. Publish a test event, watch notifications react
pf cloudevents publish order.created
| 刚才发生的事 |
|---|
|
2个健康检查和Pulumi配置服务 一份活动合同 packages/contracts/一个自动发现事件的处理者 ✨ 没有手工接线。 无相相相通. 一切都是明确的. |
QQ 命令
| 命令 | 它会做什么 |
|---|---|
pf dev | QQ 启动开发基础设施(NATS)+所有监视模式的服务 |
pf new hono-micro <path> | QQ 创建 Hono 服务( 轻量级, Bun- 优化) |
pf new nest-micro <path> | QQ 创建 NestJS 服务( 全功能, 装饰) |
pf new workspace [name] | QQ 创建新工作空间并设置基础设施 |
pf cloudevents add <type> --service <path> | +++ 合同 + 接线流 |
pf cloudevents list | 列出可用的事件和消费者 |
pf cloudevents publish <type> | 将模拟事件发布到NATS |
pf setup completion | * 安装外壳自动补全(zsh/bash) |
pf test | * 在整个单列波运行测试 |
pf build | * 建立所有软件包和服务 |
pf lint | 使用 Biome 的 Lint 和格式 |
pf audit | * 运行依赖性安全审计 |
pf pulumi <args> | 在工作区运行普鲁米 infra/ 目录,例如:. pf pulumi up |
您的工作空间可以添加自己的命令 :
pf.commands在树根中package.json(可选为cwd财务报告和审定财务报表command),或任意根scripts条目,以pf <name>下列出插件pf.plugins添加命令组, 如@crossdelta/cloudevents对pf cloudevents。插件接口在docs/plugins.md在数据源中.
* 与编码代理合作
@crossdelta/pf-mcp 是一个 示范背景协议 用于 SDK 平台的服务器。 它暴露出四个工具:
| 工具 | 它会做什么 |
|---|---|
scan_workspace | 扫描服务、合同和配置的工作空间 |
generate_service | 生成一个新的微服务计划( 默认干运行) |
plan_review | 应用前验证生成计划 |
apply_changes | 应用生成计划中的更改 |
服务器计划结构;代理写内容. 服务按此顺序创建: 代理呼叫 generate_service 及时收到一份附有文件的计划 planHash,为这些文件写代码,可选调用 plan_review,请您确认,然后打电话 apply_changes 与 expectedPlanHash。 。 。 .
bun add @crossdelta/pf-mcp
node ./node_modules/@crossdelta/pf-mcp/dist/cli.js --stdio
服务器通过stdio说话,所以你的代理的MCP客户端必须启动这个命令. 它还为来自 docs/generators/ 作为 MCP 资源的软件包源中 docs://generators。 。 。 .
部署
pf pulumi up # deploys the current Pulumi stack
每艘工作空间飞船都有一个Pulumi堆栈并预先配置了GitHub Actions. 添加更多堆栈( 如 . stage, (中文(简体) ), production随着你的平台增长. pf 财务报告和审定财务报表 generate-env 使用任意堆栈名称.
pf dev 生成 .env.local 从当前堆栈的 Pulumi 配置( 密钥, API 密钥) 并发现了服务端口 .
预配置的 GitHub 动作包括:
| 触发 | 行动 |
|---|---|
公关改为 main | QQ Lint + 测试 |
推动 main | * 构建、推动到全球大气监测、部署 |
变动 packages/ | QQ 发布到 npm |
所需经费
| 所需经费 | 页:1 |
|---|---|
| 阿宝 或节点.js 21 | 速度推荐包 |
| 普鲁米CLI | 用于部署基础设施 |
| 夹克 | 当地NATS |
在兜帽男的脚下
📁 项目结构
my-platform/
├── services/ # Your microservices
│ ├── orders/
│ └── notifications/
├── packages/
│ └── contracts/ # Event contracts (single source of truth)
├── infra/
│ └── services/ # Auto-generated Pulumi configs
└── .env.local # Auto-generated from infra
关键见解是: 服务定义了它们的端口,env vars,以及一次活动订阅. 其他一切皆从所出.
🛠️ 技术堆栈
| 层 | 技术 |
|---|---|
| 单曲 | 涡轮 |
| 服务 | 浩诺 或者说 网点JS |
| 通讯 | 海军 + 喷气相机 |
| 活动 | @ crossdelta/ clodevents (英语) (单位:千美元)云节 + Zod) 组合键 |
| 基础设施 | 普鲁米 • 数字海洋(可扩展) |
| 运行时间 | 阿宝 |
⚙️ 工作空间配置
{
"pf": {
"registry": "my-org/my-platform",
"commands": {
"deploy": {
"cwd": "infra",
"command": "pulumi up --yes",
"description": "Deploy infrastructure to production"
}
},
"paths": {
"services": { "path": "services", "watch": true },
"contracts": { "path": "packages/contracts" }
}
}
}
🏗️ 服务基础设施配置
// infra/services/orders.ts
import { ports, type K8sServiceConfig } from '@crossdelta/infrastructure'
const config: K8sServiceConfig = {
name: 'orders',
ports: ports().http(4001).build(),
replicas: 1,
healthCheck: { httpPath: '/health' },
resources: {
requests: { cpu: '50m', memory: '64Mi' },
limits: { cpu: '150m', memory: '128Mi' },
},
}
export default config
见 @ crossdelta/ 基础设施 完全选择.
📡 事件驱动的架构
合同 住在这里 packages/contracts/ 作为真理的唯一来源:
// packages/contracts/src/events/orders/created.ts
import { createContract } from '@crossdelta/cloudevents'
import { z } from 'zod'
export const OrderCreatedSchema = z.object({
orderId: z.string(),
total: z.number(),
})
export type OrderCreatedData = z.infer<typeof OrderCreatedSchema>
export const OrdersCreatedContract = createContract({
type: 'order.created',
channel: { stream: 'ORDERS' },
schema: OrderCreatedSchema,
})
处理器 进口合同和授权使用案件:
// services/notifications/src/events/order-created.handler.ts
import { handleEvent } from '@crossdelta/cloudevents'
import { OrdersCreatedContract } from '@my-platform/contracts'
import { sendOrderNotification } from '../use-cases/send-notification.use-case'
export default handleEvent(OrdersCreatedContract, async (data) => {
await sendOrderNotification(data)
})
掌柜是自动发现的 无人工订阅.
见 @ crossdelta/ clodevents (英语) (原始内容存档于2018-10-21). For full event API.
⚡ NATS 信件经纪人
本地NATS 开始于
pf dev发展基础设施. 生产流是通过合同中的Pulumi实现的.
每个工作空间包括预配置的有JetStream用于开发的NATS:
发展:
- 自动启动
pf dev(以多克为主,以麻黄为主 - 端口 :
4222(客户),8222(监测) - 健康检查:
curl http://localhost:8222/healthz - 流: 由 :
pf dev(备忘录,保留1小时)
生产:
- 通过普鲁米部署(
infra/(中文(简体) ) - 采用保留政策的合同的流程
- 有明确限制的持久储存(基于文件)
服务从不创建流. 在德夫语中,
pf dev自动创建合同。 在prod中,普鲁米实现.
许可证
麻省理工学院 横跨德尔塔