一次定义,处处信任
CtroEnv 使用四个核心验证器工厂来确保您的环境变量安全。
其工作原理如下:
string()用于文本 适用于 URL、电子邮件和端口。您可以链式调用.min()或.max()等规则来设置长度限制。number()用于数值 这会将像 "3000" 这样的字符串转换为实际的数字。您可以强制要求整数或正值。boolean()用于 true 或 false 用于处理功能标志(feature flags)。它会将 "true"、"1" 或 "false" 转换为实际的布尔值。pick()用于特定集合 用于将值限制在列表中。例如,您可以强制NODE_ENV只能是 "development"、"staging" 或 "production"。如果您拼写错误,错误信息会提示正确的拼写。
每个验证器的实用工具:
• .default(value) - 如果变量缺失,则设置默认值。
• .optional() - 允许变量为 undefined。
• .secret() - 在日志中掩盖敏感数据。
• .describe(text) - 为您的错误消息添加说明文档。
• .validate(fn) - 允许您为特定规则编写自定义逻辑。
CtroEnv 可跨不同环境工作:
- Node.js: 使用
nodeSource()或loadEnv()来读取 .env 文件。 - Vite: 使用
vitePlugin,如果变量无效,则构建失败。 - Next.js: 使用内置支持来分离服务端和客户端变量。这可以防止您意外地将密钥暴露给浏览器。
当验证失败时,CtroEnv 不仅仅是停止运行。它会收集每一个错误并一次性全部显示。您可以得到一份清晰的列表,告知哪些变量缺失、哪些类型错误以及哪些未通过您的自定义规则。
这使您的配置保持不可变,并使您的运行时环境具有可预测性。
来源:https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl