@castore/command-zod

中文文档
2.4.2发布于 2025/04/18MITTypeScriptESM + CJS零依赖近 30 天下载 2355

使用 Zod 定义 DRY Castore 命令

中文使用文档
文档目录3 节
  1. * 安装
  2. 使用量
  3. 属性方法( M)

Zod 命令

德里·卡斯托尔 Command 使用定义 zod。 。 。 .

* 安装

# npm
npm install @castore/command-zod

# yarn
yarn add @castore/command-zod

这个软件包 @castore/core 财务报告和审定财务报表 zod (以上 v3) 作为对等依赖, 您也必须安装它们 :

# npm
npm install @castore/core zod

# yarn
yarn add @castore/core zod

使用量

import z from 'zod';

import { ZodCommand } from '@castore/command-zod';
import { tuple } from '@castore/core';

const pokemonAppearedInputSchema = z.object({
  name: z.string(),
  level: z.number(),
});

const pokemonAppearedOutputSchema = z.object({
  pokemonId: z.string().uuid(),
});

// 👇 generics are correctly inferred
const pokemonAppearCommand = new ZodCommand({
  commandId: 'POKEMON_APPEAR',
  requiredEventStores: tuple(pokemonsEventStore),
  inputSchema: pokemonAppearedInputSchema,
  outputSchema: pokemonAppearedOutputSchema,
  // 👇 handler input/output types are correctly inferred
  handler: async (
    commandInput,
    [pokemonsEventStore],
    { generateUuid }: { generateUuid: () => string },
  ) => {
    const { name, level } = commandInput;
    const pokemonId = generateUuid();

    await pokemonsEventStore.pushEvent({
      aggregateId: pokemonId,
      version: 1,
      type: 'POKEMON_APPEARED',
      payload: { name, level },
    });

    return { pokemonId };
  },
});

等于:

import { Command } from '@castore/core';

type RequiredEventStores = [typeof pokemonsEventStore];
type CommandInput = { name: string; level: number };
type CommandOutput = { pokemonId: string };

const pokemonAppearCommand = new Command<
  RequiredEventStores,
  RequiredEventStores,
  CommandInput,
  CommandOutput
>({
  commandId: 'POKEMON_APPEAR',
  requiredEventStores: [pokemonsEventStore],
  handler: async (commandInput, [pokemonsEventStore]) => {
    // ...same code
  },
});

属性方法( M)

ZodCommand 执行 Command 分类并添加以下属性:

  • inputSchema (?object): 命令输入 Zod 计划
const inputSchema = pokemonAppearCommand.inputSchema;
// => pokemonAppearedInputSchema
  • outputSchema (?object): 命令输出 Zod 计划
const outputSchema = pokemonAppearCommand.outputSchema;
// => pokemonAppearedOutputSchema

版本与发布记录

@castore/command-zod 共发布 7 个版本,首次发布于 2023/11/03;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.4.2latest2025/04/181.6 年前
2.4.12025/02/251.7 年前
2.4.02025/02/181.7 年前
2.3.12024/04/252 年前
2.3.02024/03/212 年前
2.2.02024/01/172 年前

关于 @castore/command-zod 的常见问题

@castore/command-zod 是什么?

使用 Zod 定义 DRY Castore 命令

如何安装 @castore/command-zod?

在项目目录运行 npm install @castore/command-zod,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@castore/core(^2.0.0)、zod(^3.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@castore/command-zod 支持 TypeScript 吗?

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

@castore/command-zod 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@castore/command-zod 可以商用吗?

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

@castore/command-zod 的下载量有多少?

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

@castore/command-zod 还在维护吗?

最新版本 2.4.2 发布于 2025/04/18(1.6 年前);至今共发布 7 个版本,其中过去 12 个月发布了 0 个;首次发布于 2023/11/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。