4 个版本
0.1.3 | 2024年5月24日 |
---|---|
0.1.2 | 2024年5月24日 |
0.1.1 | 2024年5月24日 |
0.1.0 | 2024年5月6日 |
##263 in 配置
110KB
2.5K SLoC
vnv
增强 .env 语法的装饰器,用于验证您的环境变量。
# linux / windows
npm install @iedan/vnv
或
# linux / windows/ mac
cargo install vnv
示例
验证一组电话号码
@matches("[0-9]{3}-[0-9]{3}-[0-9]{4}")
CALL_LIST=["333-333-3333", "111-111-1111"]
为开发或生产使用不同的 API
@dev
@min(9)
API_URL="http://localhost:7301"
@dev
@min(10)
@startsWith("https://")
@doesNotMatch("localhost")
API_URL="https://my-domain.dev"
入门
-
下载源代码并编译二进制文件。
-
将系统路径变量设置为指向二进制文件。
-
使用
vnv --version
检查您是否已正确配置。 -
在此 处 下载 VS Code 扩展以实现语法高亮。
-
运行
vnv init
以设置配置文件和可选的模板文件。 -
运行
vnv check
以验证您的环境变量 -
运行
vnv build
将.vnv
文件构建为.env
文件
变量类型
目前 valid-env 支持 4 种不同的环境变量类型。
- 字符串
- 数字
- 字符串数组
- 数字数组
为了简化对最终用户的体验,所有数字都是 64 位浮点整数。
增强装饰器
valid-env 通过扩展 .env 语法并添加装饰器,允许您验证和限定您的环境变量。
装饰器
@public
将环境变量的作用域更改为 公共;
用法
@public
PORT=3000
允许的变量类型
- 字符串
- 数字
- 字符串数组
- 数字数组
@private
这并不是必要的,因为默认情况下所有变量都是 私有的,但可能有助于标注变量隐私的重要性。
用法
@private
SECRET="this is a super private secret"
允许的变量类型
- 字符串
- 数字
- 字符串数组
- 数字数组
@dev
将环境变量的环境更改为 开发;
用法
@dev
PORT=3000
允许的变量类型
- 字符串
- 数字
- 字符串数组
- 数字数组
@prod
将环境变量的环境更改为 生产;
用法
@prod
PORT=3000
允许的变量类型
- 字符串
- 数字
- 字符串数组
- 数字数组
@min
允许您验证变量的最小长度或大小。对于数字类型,它将验证数字的大小。对于字符串类型,它将验证长度。
用法
@min(1000)
POLLING_INTERVAL=5000
@min(10)
DOMAIN="https://google.com"
@min(1024)
MICROSERVICE_PORTS=[8080, 8081, 8082]
@min(5)
ADMIN_EMAILS=["[email protected]", "[email protected]"]
允许的变量类型
- 字符串
- 数字
- 字符串数组
- 数字数组
@max
允许您验证变量的最大长度或大小。对于数字类型,它将验证数字的大小。对于字符串类型,它将验证长度。
用法
@max(45000)
POLLING_INTERVAL=5000
@max(25)
APP_NAME="super-powered-app"
@max(49151)
MICROSERVICE_PORTS=[8080, 8081, 8082]
@max(254)
ADMIN_EMAILS=["[email protected]", "[email protected]"]
允许的变量类型
- 字符串
- 数字
- 字符串数组
- 数字数组
@startsWith
允许您验证字符串变量的开始。
用法
@startsWith("https://")
DOMAIN="https://google.com"
@startsWith("https://")
ALLOWED_ORIGINS=["https://google.com", "https://github.com"]
允许的变量类型
- 字符串
- 字符串数组
@endsWith
允许您验证字符串变量的结束。
用法
@endsWith("@gmail.com")
EMAIL="[email protected]"
@endsWith("@gmail.com")
ALLOWED_ORIGINS=["[email protected]", "[email protected]"]
允许的变量类型
- 字符串
- 字符串数组
@matches
启用基于正则表达式的模式匹配来验证字符串变量。当模式不匹配时将返回错误。
用法
# Digits only regex
@matches("^\d+$")
PHONE_NUMBER="4427211223"
@matches("^\d+$")
PHONE_NUMBERS=["4427211223", "4427511227", "4428211213"]
允许的变量类型
- 字符串
- 字符串数组
@doesNotMatch
启用基于正则表达式的模式匹配来验证字符串变量。当模式匹配时将返回错误。
用法
# Special characters regex
@doesNotMatch("[^\w.]")
SUPER_USER="admin"
@doesNotMatch("[^\w.]")
ADMIN_USERNAMES=["johnothy", "jimnothy"]
允许的变量类型
- 字符串
- 字符串数组
公共和私有
一些环境变量处理器允许您将变量范围设置为公共或私有。(例如 SvelteKit)。这允许您在服务器和客户端代码之间分离对环境变量的使用权限。默认情况下,所有变量都是私有范围,但可以使用 @public
装饰器标记为公共。
注意:尽管
@private
装饰器是有效的语法并且列在装饰器中,但它不会改变变量的范围。然而,它可以用于注释那些应该被视为敏感且不应更改为其公有的内容。
环境
有时您希望为不同的环境或甚至完全不同的变量使用不同的变量值。这可以通过 @dev 和 @prod 装饰器实现。
以下是一些示例
同一变量的不同值
@dev
PORT=3000
@prod
PORT=8080
在 prod 中省略变量
@dev
KEY="..."
在 dev 中省略变量
@prod
KEY="..."
请注意,任何未标记为
@prod
或@dev
的键将包含在所有环境中。
如何指定环境
将 --prod
或 --dev
标志传递给检查/构建命令。默认情况下,环境设置为 dev
,因此不需要提供 --dev
标志。
.vnv 文件
@dev
PORT=3000
@prod
PORT=8080
输出
C:\Users\aidan\project> vnv build --dev
Checking '.vnv'...
PORT ✔️
PORT ⏭️
Completed in 1.24ms
Completed build wrote output to .env.
生成的 .env 文件
# This file was generated from '.vnv' by vnv.
# @dev
PORT=3000
依赖项
~4–16MB
~147K SLoC