@crvouga/mockingbird-fleet

中文文档
0.6.0发布于 2026/11/11MITTypeScriptES Module构建来源已验证近 30 天下载 2507

销售商中立的机队生命周期,发现,档案和Mockingbird模拟器的控制客户端.

中文使用文档
文档目录7 节
  1. 安装
  2. 使用量
  3. 一个文件 : mockingbird.yaml
  4. API 密码
  5. 客户运输和私人环境
  6. 应用程序归档兼容性
  7. 核查

@crvouga/ 嘲笑鸟儿- fleet

本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .

供应商中立节点.js车队管理. 要求节点.js 22或更新. 安装 @crvouga/mockingbird-fleet 和模拟器软件包中的应用程序;条纹是可选的. 私人 @crvouga/mockingbird-adapter-node 执行是捆绑的,从未单独安装. 现有 @crvouga/mockingbird-service-stripe/fleet 进口仍由同样的API支持.

安装

npm install @crvouga/mockingbird-fleet @crvouga/mockingbird-service-postgres @crvouga/mockingbird-service-redis @crvouga/mockingbird-service-cognito

使用量

import { createInstalledServiceLoader, FleetClient, startFleet } from '@crvouga/mockingbird-fleet'

const fleet = await startFleet({ services: {
  database: { target: 'postgres', port: 0 },
  cache: { target: 'redis', port: 0 },
  identity: { target: 'cognito', port: 0 },
}}, { load: createInstalledServiceLoader({
  projectRoot: process.cwd(), services: ['postgres', 'redis', 'cognito'],
}) })
try {
  const client = new FleetClient(fleet.manifest.adminBase)
  await client.createNamespace('test')
} finally {
  await fleet.close()
}

解析器只允许从它们中添加已安装的服务后缀 /server 导出, 相对于明确的消费项目根(包括pnpm symlinks). 从来没有安装过 软件包。 使用不同实例名称 target。习惯 load 仍然支持调用.

mockingbird-fleet serve --config mockingbird.json --ready-json
mockingbird-fleet fleet doctor --config mockingbird.json --json

该套件出口类型为生命周期、客户端、档案、仓库、发现、迁移、, 参与者、连接提供和延长合同。 公开发现省略了证书; 将连接文件写入私有路径。 公共入侵支助是针对提供者的.

一个文件 : mockingbird.yaml

serve --config 使用 JSON 或 YAML 的舰队配置,或 mockingbird.yaml 声明:文件Fleet Cloud适用。 同样的文件然后运行你的机器上的舰队.

version: 1
organization: acme
projects:
  web:
    fleets:
      acme-staging:
        services:
          stripe: { durability: strict }
          db: { target: postgres, protocol: postgres, port: 5432, local: true }
npx mockingbird-fleet serve --config mockingbird.yaml          # add --fleet <slug> when it declares several
MOCKINGBIRD_FLEET_URL=https://… MOCKINGBIRD_FLEET_TOKEN=… npx mockingbird-fleet plan
npx mockingbird-fleet apply            # --prune also deletes what the file no longer declares

只有舰队云读取的密钥durability, (中文(简体) ), flushIntervalMs, (中文(简体) ), webhookOrigins, (中文(简体) ), local,则a 车队 access 财务报告和审定财务报表 requestsPerMinute)在本地舰队开始前被放弃. plan 财务报告和审定财务报表 apply 带 --file (默认) mockingbird.yaml, (中文(简体) ), --url, (中文(简体) ), --token-env 财务报告和审定财务报表 --json。 。 。 .

API 密码

FleetClient, (中文(简体) ), FleetClientError, (中文(简体) ), FleetClientResponseError, (中文(简体) ), FleetInstrumentation, (中文(简体) ), FleetObservations, (中文(简体) ), FleetRunError, (中文(简体) ), NamespacePool, (中文(简体) ), RepositoryWriter, (中文(简体) ), advertisedHttpBase, (中文(简体) ), archiveCompatibility, (中文(简体) ), archiveProtector, (中文(简体) ), archiveReachability, (中文(简体) ), assertArchiveCompatibility, (中文(简体) ), assertFleetConfig, (中文(简体) ), compactArchive, (中文(简体) ), composeFleetSchema, (中文(简体) ), createFleetIngress, (中文(简体) ), createInstalledServiceLoader, (中文(简体) ), diffArchives, (中文(简体) ), doctorFleet, (中文(简体) ), fileParticipant, (中文(简体) ), filesystemConditionalStore, (中文(简体) ), filesystemOperationJournal, (中文(简体) ), filesystemRepository, (中文(简体) ), fleetCommands, (中文(简体) ), fleetConfigSchema, (中文(简体) ), incrementalArchive, (中文(简体) ), ingressSupport, (中文(简体) ), inspectArchive, (中文(简体) ), launchFleet, (中文(简体) ), listen, (中文(简体) ), materializeArchive, (中文(简体) ), migrateAndVerify, (中文(简体) ), migrateApplicationArchive, (中文(简体) ), migrateArchive, (中文(简体) ), ownedTransport, (中文(简体) ), participantConformance, (中文(简体) ), planRestoreBindings, (中文(简体) ), providerServeOptions, (中文(简体) ), providerServeValues, (中文(简体) ), publishIncremental, (中文(简体) ), readJsonOption, (中文(简体) ), rebaseArchiveNamespace, (中文(简体) ), reconcileOperation, (中文(简体) ), rehearseFleet, (中文(简体) ), renderConnections, (中文(简体) ), replayFleetTrace, (中文(简体) ), resolveServeControls, (中文(简体) ), resolveServeIdBase, (中文(简体) ), resolveServeSettings, (中文(简体) ), runCli, (中文(简体) ), s3ConditionalStore, (中文(简体) ), s3Repository, (中文(简体) ), serve, (中文(简体) ), serveCommand, (中文(简体) ), startFleet, (中文(简体) ), validateArchive, (中文(简体) ), validateFleetConfig, (中文(简体) ), withFleetRun, (中文(简体) ), writeConnections。 。 。 .

mockingbird.yaml 声明: parseDeclaration, (中文(简体) ), checkDeclaration, (中文(简体) ), DeclarationError, (中文(简体) ), isDeclaration, (中文(简体) ), declaredFleets, (中文(简体) ), localFleetConfig, (中文(简体) ), DURABILITY_MODES, (中文(简体) ), ACCESS_MODES, (中文(简体) ), CLOUD_SERVICE_KEYS。 。 。 .

客户运输和私人环境

FleetClient 拒绝后续之前的每个 HTTP 重定向, 包括同源重定向 . 自定义 fetch 适配器必须尊重 redirect: 'manual' 和提供的中止信号;适配器 无法执行证书边界。 重定向错误曝光 只有状态/代码,绝不是位置。 代理错误保留 HTTP 状态为 FleetClientError; 错误 诊断器保持有界机器 type编号 :code 识别符和去掉原始体、信件和摘录. JSON 产量不合格 FleetClientResponseError 与 code: 'invalid_json'; 空关 回复成功 undefined。请求绝不自动重试突变.

解码响应默认为64 MiB字节限制. maxResponseBytes 客户端或 request 设定明确的限制,包括归档呼叫。 广告长度和流出块总数 选中; 超量注销主体 code: 'response_too_large'. 请求截止日期和 调用器中止信号通过解码一起应用.

renderConnections 接受 {service, field?, fallback?} 测绘. 现有 {service} 条目 仍然返回完整的 URL 。 字段为 url, (中文(简体) ), hostname, (中文(简体) ), port, (中文(简体) ), username, (中文(简体) ), password, (中文(简体) ), pathname 财务报告和审定财务报表 database (路径没有它的领先斜线)。 IPv6 主机名去掉 URL 括号; 证书和路径是 %-decode 的。 端口使用明确的 URL 端口; 没有服务默认值 被猜测。 缺少组件拒绝, 除非配置一个明确的字符串倒置, 包括 一个空字符串。 缺少协议命名空间 URL, 缺少服务, URL 错误和未知 字段拒绝整个渲染操作。 HTTP 命名空间路径模板仍然可用 构造 HTTP 命名空间 URL 。 只有私人货单上有证明. writeConnections 保留原子0600 JSON/dotenv输出; 绝不将私人输出作为发现或诊断发布.

应用程序归档兼容性

配置 startFleet(..., {archiveCompatibility: {tags: {schema: 'v3', seed: 'baseline-a'}}}) 改为 在每个归档的 SHA-256 受保护元数据中包含应用程序标记,并要求相同的精确度 标记映射,然后恢复任何命名空间或整个环境。 此检查也适用于仓库 康复和康复 rehearseFleet (通过同样的政策)。 编解码器迁移仍然分开; 软件包 semver 绝不意味着应用程序的相容性.

未标记的后遗档案在有政策时拒绝,除非 missing: 'allow' 明确 批准遗留投入。 在没有政策的情况下,仍支持贴有标签和未加标记的档案。 标记是 调用器拥有的非秘密值:最多32个条目,1-64 ASCII 标识字符的密钥和 值为 1–256 个字符,没有控制字符。 不将证书放入标签 .

assertArchiveCompatibility 检查离线档案。 备选的第三项政策论点 archiveCompatibility(input, registry, policy) 在编解码器规划中添加相同的应用程序检查. migrateApplicationArchive 需要一个 明确的源政策,目的地标记和注册的变换回调,运行在克隆上, 并封存和验证新的档案;呼叫者可以使用 migrateAndVerify/存储器出版物 用于排练和出版。 来源始终不变。 期间没有隐性迁移 恢复,不匹配永远不会触发新的重置。 校验和检测腐败; 使用存档 * 保护真实性/机密性,防止敌方能够替换整个档案.

核查

packed.consumer.test.ts 装入此软件包并选择 Postgres、 Redis、 Cognitto 和 SQLite 文物,安装在单体外 然后使用节点开始,发现,命名空间, 进出口这批人 它声称没有Frede和私人的帮助包。 这个 中立的CLI也从消费者项目之外行使,并解决安装的服务 从它的消费根。 运行 bunx turbo run test --filter=@crvouga/mockingbird-fleet 在一次离职中.

版本与发布记录

@crvouga/mockingbird-fleet 共发布 16 个版本,首次发布于 2026/10/17;过去 12 个月发布了 16 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.0latest2026/11/11今天
0.5.92026/11/038 天前
0.5.82026/11/038 天前
0.5.72026/11/038 天前
0.5.62026/11/038 天前
0.5.52026/11/038 天前

关于 @crvouga/mockingbird-fleet 的常见问题

@crvouga/mockingbird-fleet 是什么?

销售商中立的机队生命周期,发现,档案和Mockingbird模拟器的控制客户端.

如何安装 @crvouga/mockingbird-fleet?

在项目目录运行 npm install @crvouga/mockingbird-fleet,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-fleet,可以用 npx mockingbird-fleet 直接运行。

@crvouga/mockingbird-fleet 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@crvouga/mockingbird-fleet 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@crvouga/mockingbird-fleet 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@crvouga/mockingbird-fleet 可以商用吗?

@crvouga/mockingbird-fleet 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@crvouga/mockingbird-fleet 的下载量有多少?

根据 npm 官方下载统计,@crvouga/mockingbird-fleet 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,507 次,日均约 84 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@crvouga/mockingbird-fleet 还在维护吗?

最新版本 0.6.0 发布于 2026/11/11(今天);至今共发布 16 个版本,其中过去 12 个月发布了 16 个;首次发布于 2026/10/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。