用途:ArkEnv 是面向现代 JavaScript 与 TypeScript 框架的类型安全环境变量校验库,为各框架提供统一入口 import { env } from "./env",用于定义类型安全的环境变量 schema 并在前后端代码中读取。
主要能力:v1 提供两套一等校验引擎 —— @arkenv/core 内置 ArkType DSL 引擎,支持高性能 schema 定义与自动强制转换;@arkenv/standard 基于 Standard Schema,支持任何兼容校验器(如 Zod、Valibot)。支持自动强制转换(string.numeric、number.port、布尔、JSON 对象、数组)与默认值(如 "boolean = true")。
框架集成:Vite 插件 @arkenv/vite-plugin 在 transform 模式重写 env.ts 导入,将公开 VITE_* 值内联、私有服务端键替换为抛错运行时守卫;Bun 插件 @arkenv/bun-plugin 在 Bun.build / Bun.serve 中拦截 env.ts 导入;Next.js(@arkenv/nextjs)提供构建期与运行时校验及自动客户端/服务端隔离代理;Nuxt(@arkenv/nuxt)模块提供 Nitro 启动校验与运行时代理守卫;Node.js 通过 @arkenv/core 或 @arkenv/standard 在启动时校验。
使用方式:用 CLI 初始化,如 pnpm dlx arkenv init(或 npx arkenv init),可自动检测框架并生成 env.ts,支持 --preset、-P <provider> 选择托管商预设(vencel、netlify、cloudflare、railway、render、fly)。check 命令用 pnpm arkenv check 校验环境,支持 --schema、-s、--verify-example、--env-file、--json。Schema 定义示例:arkenv({ PORT: "number.port = 3000", DATABASE_URL: "string", ... })。Agent 自动化初始化使用 pnpm dlx arkenv init --agent(自动启用 --yes、--quiet、--json),通过 stdout 的 JSON 结果判断成功。
限制与注意:CLI schema 发现使用 --schema 或约定路径(env.ts、src/env.ts 等),不使用 package.json 的 arkenv 字段。--agent 不会隐含 --force;安全校验失败时返回 ok:false 与 error.code(如 CLI.GIT_TREE_DIRTY),nextActions 提供补救命令,仅确认可安全绕过时再加 --force。始终从 ./env 的 env 对象读取变量,不要在 v1 直接用 import.meta.env 或 process.env;不要创建环境类型增强;服务端密钥不要加客户端前缀(VITE_、NEXT_PUBLIC_、BUN_PUBLIC_、NUXT_PUBLIC_)。