@arthur-lobo/zod-env

中文文档
1.1.0发布于 2026/10/27MITTypeScriptESM + CJS零依赖近 30 天下载 1695

用 zod 装入并验证您的嵌入.

中文使用文档
文档目录8 节
  1. 安装
  2. 说明
  3. 基本用途
  4. 同步类 : ZodEnv
  5. 同步类 : AsyncZodEnv
  6. 正在装入.env 文件
  7. Schema 实例
  8. 福利

佐德信封

用于装入和验证环境变量的 TypeScript 库 佐德语Name,为环境配置提供强而安全的类型验证.

安装

bun add @arthur-lobo/zod-env zod
# or
npm install @arthur-lobo/zod-env zod

zod 是一个对等依赖,所以它必须安装在库旁.

说明

ZodEnv 允许您定义 Zod schemas 来验证环境变量,确保它们的值格式正确,并在必要时提供默认值. 它支持同步操作和同步操作,并允许您定义如何 .env 必须装入.

基本用途

同步类 : ZodEnv

import { z } from 'zod';
import { ZodEnv } from '@arthur-lobo/zod-env';

const schema = z.object({
  PORT: z.coerce.number().default(3000),
  DATABASE_URL: z.string(),
  DEBUG: z.coerce.boolean().default(false),
});

const env = new ZodEnv({
  schema,
  getEnv: () => process.env, // or any function that returns an object with the variables like `import.meta.env` when using vite to build your frontend
});

// Access validated values
console.log(env.get('PORT')); // 3000 (or the value of process.env.PORT if defined)
console.log(env.get('DATABASE_URL')); // validated string

同步类 : AsyncZodEnv

import { z } from 'zod';
import { AsyncZodEnv } from '@arthur-lobo/zod-env';

const schema = z.object({
  API_KEY: z.string(),
  TIMEOUT: z.coerce.number().default(5000),
});

const env = new AsyncZodEnv({
  schema,
  getEnv: async () => {
    await someAsyncOperation();
    return process.env;
  },
});

// Access validated values asynchronously
const apiKey = await env.get('API_KEY');
const timeout = await env.get('TIMEOUT');

正在装入.env 文件

您可以自动加载 .env 使用 Node.js 的文件 loadEnv 函数 :

import { loadEnvFile } from 'node:process';

const env = new ZodEnv({
  schema: z.object({
    SECRET_KEY: z.string(),
  }),
  loadEnv: loadEnvFile, // Loads the .env file
  getEnv: () => process.env,
});

console.log(env.get('SECRET_KEY')); // Validated value from .env

对于同步操作:

const env = new AsyncZodEnv({
  schema: z.object({
    SECRET_KEY: z.string(),
  }),
  loadEnv: async () => loadEnvFile(), // Loads .env asynchronously
  getEnv: async () => process.env,
});

Schema 实例

import { z } from 'zod';

// Basic schema with default values
const basicSchema = z.object({
  PORT: z.coerce.number().default(3000),
  HOST: z.string().default('localhost'),
  DEBUG: z.coerce.boolean().default(false),
});

// Schema with custom validations
const advancedSchema = z.object({
  DATABASE_URL: z.string().url(),
  JWT_SECRET: z.string().min(32, 'JWT secret must be at least 32 characters'),
  MAX_CONNECTIONS: z.coerce.number().min(1).max(100),
  ALLOWED_ORIGINS: z.string().transform(str => str.split(',')).pipe(z.array(z.string().url())),
});

福利

  • 强类型验证:使用Zod来确保环境变量的格式是正确的.
  • 默认值: Zod schema中默认值的原生支持.
  • 灵活性: 任何环境变量源的工程(process.env,导入.meta.env,自定义文件等).
  • .env 支持: 与 .env 通过Node.js的文件 loadEnvFile。 。 。 .
  • 自动同步/同步:根据需要选择同步操作或同步操作.
  • 类型脚本:完全输入,提供自动完成和类型检查.

版本与发布记录

@arthur-lobo/zod-env 共发布 3 个版本,首次发布于 2026/03/16;过去 12 个月发布了 3 个版本。

版本发布日期距今
1.1.0latest2026/10/2714 天前
1.0.12026/03/177 个月前
1.0.02026/03/167 个月前

关于 @arthur-lobo/zod-env 的常见问题

@arthur-lobo/zod-env 是什么?

用 zod 装入并验证您的嵌入.

如何安装 @arthur-lobo/zod-env?

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

@arthur-lobo/zod-env 支持 TypeScript 吗?

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

@arthur-lobo/zod-env 支持 ESM 还是 CommonJS?

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

@arthur-lobo/zod-env 可以商用吗?

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

@arthur-lobo/zod-env 的下载量有多少?

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

@arthur-lobo/zod-env 还在维护吗?

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