@duplojs/zod-accelerator

中文文档
2.6.2发布于 2025/02/26MITTypeScriptESM + CJS零依赖近 30 天下载 3020

NPM version

中文使用文档
文档目录10 节
  1. 安装
  2. 基准
  3. 怎样用
  4. 什么时候用
  5. 怎么会这样
  6. 对 Zod 类型的支持
  7. 差异
  8. 如何创建自定义函数
  9. 缓存系统?
  10. 跳过 eval ? 吗?

@duplojs/zod-加速器

NPM version

安装

npm i @duplojs/zod-accelerator

基准

Benchmarck result

怎样用

import * as zod from "zod";
import {ZodAccelerator} from "@duplojs/zod-accelerator";

const zodSchema = zod.object({
    firstname: zod.string(),
    lastname: zod.string(),
    age: zod.number(),
    email: zod.string(),
    gender: zod.enum(["boy", "girl"]),
    connected: zod.boolean(),
    createdAt: zod.date(),
    addresse: zod.object({
        postCode: zod.string(),
        city: zod.string(),
        number: zod.number()
    }),
}).array();

const zodAccelerateSchema = ZodAccelerator.build(zodSchema);

const inputData = Array.from({length: 10}).fill({
    firstname: "  Mike ",
    lastname: "ee",
    age: 21,
    email: "[email protected]",
    gender: "girl",
    connected: true,
    createdAt: new Date(),
    addresse: {
        postCode: "22778",
        city: "Paris",
        number: 67
    },
});

const outputData = zodAccelerateSchema.parse(inputData);

什么时候用

当在同一会话中多次使用这个计划时,ZodAccelerator是有用的. 构建自定义函数的时间约为其执行时间的两倍. 如果你只需要叫一次你的计划, 它可能不是最好的解决方案.

怎么会这样

这个 ZodAccelerator.build 函数允许您根据作为参数通过的策略创建自定义函数。 该函数将用于创建实例 ZodAcceleratorParser 对象。 这使得它的用法与Zod相似.

zodSchema.parse(...)
zodAccelerateSchema.parse(...)

zodSchema.parseAsync(...)
zodAccelerateSchema.parseAsync(...)

zodSchema.safeParse(...)
zodAccelerateSchema.safeParse(...)

zodSchema.safeParseAsync(...)
zodAccelerateSchema.safeParseAsync(...)

对 Zod 类型的支持

为了构建自定义函数,我们已经为每种类型创建了转换器. 并非所有类型都得到支持。 然而,为避免相容性问题,当一个类型不被支持时,ZodAccelerator直接使用Zod schema. 查找支持的类别,请访问 scripts/accelerators 文件夹.

差异

ZodAccelerator创建的功能与Zod的基本功能相比有一些关键差异:

  • 如有问题,计划分析不再继续,立即停止.
  • 错误并不那么明确.
  • 所有次要参数,如自定义消息,可能不会在任何地方被执行(可以根据请求完成).
  • 佐德的背景 zodEffect 还不够完整.

如何创建自定义函数

对于Zod提供的每一种类型,我们有一个算法,将Zod schema中的信息翻译为一串代码. 最后,将不同的相关部分组装起来,并使用 eval 函数( 无法注入) .

缓存系统?

能否在文件中建立这些计划,然后给他们打电话而不是重建它们? 不幸的是,没有。 建筑是强制性的,因为除了内容外,我们还构建其背景(第1行)this) (中文(简体) ). 涉及 ZodEffect 类型,例如,相关函数被存储在上下文中。 因此,无法跳过施工阶段.

跳过 eval ? 吗?

如前所述,ZodAccelerator在节点程序启动后使用eval函数解释代码. 目前,似乎没有其他方法可行.

版本与发布记录

@duplojs/zod-accelerator 共发布 33 个版本,首次发布于 2024/03/08;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.6.2latest2025/02/261.7 年前
2.6.12025/02/251.7 年前
2.6.02025/02/251.7 年前
2.5.32024/12/091.9 年前
2.5.3-betabeta2024/12/091.9 年前
2.5.22024/11/292 年前

关于 @duplojs/zod-accelerator 的常见问题

如何安装 @duplojs/zod-accelerator?

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

@duplojs/zod-accelerator 支持 TypeScript 吗?

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

@duplojs/zod-accelerator 支持 ESM 还是 CommonJS?

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

@duplojs/zod-accelerator 可以商用吗?

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

@duplojs/zod-accelerator 的下载量有多少?

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

@duplojs/zod-accelerator 还在维护吗?

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