首页
/ 推荐使用 znv:强大的环境变量解析库

推荐使用 znv:强大的环境变量解析库

2024-05-23 23:35:11作者:秋泉律Samson
znv
Type-safe environment parsing and validation for Node.js with Zod schemas

项目介绍

znv 是一个基于 Zod 的环境变量解析工具,它可以将你的环境变量转化为验证过且类型安全的只读对象,适用于 Node.js 应用程序。通过提供清晰的规范和默认值,znv 可以帮助你轻松管理并确保配置的正确性,避免因配置错误导致的问题。

项目技术分析

znv 内部利用了 Zod,一个强大的类型安全的 JSON 数据验证器,对环境变量进行预处理和转换。znv 自定义了一些特别针对环境变量的解析规则,并简化了在 Zod 中为变量设置默认值的过程,尤其是在不同环境(如生产或开发)中。

项目及技术应用场景

  1. 应用配置管理 - 在启动应用程序时,可以通过 znv 将环境变量转化为结构化的配置对象,确保这些配置始终符合预期。
  2. 安全性提升 - 通过验证和类型检查,znv 可以防止因无效环境变量导致的安全问题,如意外暴露敏感信息。
  3. 开发效率优化 - 提供默认值和详细的描述,使得在不同环境中快速切换配置变得简单,减少调试时间。

项目特点

  1. 类型安全 - 使用 TypeScript 编写,可以自动推断环境变量的类型,为你的代码提供更好的类型检查。
  2. 易于使用 - 提供简单的 parseEnv 函数,接受环境变量和模式定义,返回一个已验证的对象。
  3. 默认值管理 - 按照 NODE_ENV 设置不同的默认值,让配置更灵活。
  4. 错误提示 - 当环境变量不符合规范时,会提供详细的错误信息,包括错误原因和帮助文本。
  5. 自定义解析规则 - 支持自定义 Zod 验证规则,并提供了常见的类型转换助手,如端口解析。

快速上手

npm install znv zod
# 或者
yarn add znv zod

然后创建一个 env.ts 文件:

import { parseEnv, z } from "znv";

const { NICKNAME, LLAMA_COUNT, COLOR, SHINY } = parseEnv(
  process.env,
  {
    NICKNAME: z.string().min(1),
    LLAMA_COUNT: z.number().int().positive(),
    COLOR: z.enum(["red", "blue"]),
    SHINY: z.boolean().default(true),
  }
);

console.log([NICKNAME, LLAMA_COUNT, COLOR, SHINY].join(", "));

运行这个文件,znv 就会帮你验证并解析环境变量。

通过 znv,你可以实现一个整洁、可维护且强类型的环境变量管理系统,为你的 Node.js 项目添加一层额外的安全保障。现在就尝试一下 znv 吧,看看它能如何提升你的项目质量!

znv
Type-safe environment parsing and validation for Node.js with Zod schemas
热门项目推荐
相关项目推荐

项目优选

收起
CangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
671
0
RuoYi-Vue
🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
136
18
openHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
12
8
redis-sdk
仓颉语言实现的Redis客户端SDK。已适配仓颉0.53.4 Beta版本。接口设计兼容jedis接口语义,支持RESP2和RESP3协议,支持发布订阅模式,支持哨兵模式和集群模式。
Cangjie
322
26
advanced-java
Advanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。
JavaScript
75.83 K
19.04 K
qwerty-learner
为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers
TSX
15.56 K
1.44 K
Jpom
🚀简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件
Java
1.41 K
292
Yi-Coder
Yi Coder 编程模型,小而强大的编程助手
HTML
30
5
easy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
1.42 K
231
taro
开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
TypeScript
35.34 K
4.77 K