Goenv

🌍 极简 Go 环境变量判断库

来自 GitHub 开源项目 psyb0t/goenv 的轻量库,以零依赖方式安全判定 prod/dev 环境,默认回退生产级策略。

收藏
1.2k
安装
436
版本
1.0.10
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

goenv 是一个极简的 Go 标准库封装,用于读取单个环境变量 ENV 并判定当前运行环境是 prod 还是 dev。开发者通过 goenv.Get() 获取字符串值,goenv.IsProd()goenv.IsDev() 获取布尔判断,或直接使用 goenv.Prod/goenv.Dev 常量进行分支逻辑。安装时通过 go get 引入模块,仅需标准库 os 支持,无其他运行时依赖。

显著优点

  • 零依赖极简设计:除 Go 标准库 os 外无任何外部依赖,二进制体积零膨胀,适合对依赖敏感的嵌入式或边缘场景。
  • 故障安全默认策略:当 ENV 未设置、为空或取任何非 "dev" 值时,一律回退到 prod,避免因环境配置错误意外触发开发模式的行为风险。
  • API 语义清晰:三个调用点覆盖全部需求,消除手写的 os.Getenv 字符串比较样板代码,提升可读性和一致性。
  • 运行时零副作用:库本身不发起网络请求、不读写文件、不访问其他环境变量,纯内存计算,安全边界清晰。

潜在缺点与局限性

  • 环境二元化限制:仅支持 dev/prod 两种状态,staging、test、ci、local 等场景被强制归入 prod,多环境矩阵项目需自行扩展或放弃此库。
  • 变量名不可配置:硬编码读取 ENV,无法适配需要自定义变量名(如 APP_ENVRUNTIME_ENV)的组织规范。
  • 类型别名无编译期保护Typestring 类型别名而非独立类型,任何字符串均可赋值,无法防止常量误用。
  • 大小写敏感严格匹配:仅 "dev" 小写形式触发开发模式,"DEV""development" 等均被视为生产环境,可能因大小写约定导致误判。

适合的目标群体

  • 个人开发者或小型团队维护的 Go 服务,仅需区分生产与本地开发两态。
  • 已有项目已引入 goenv,需要统一补全环境判断逻辑的维护者。
  • 对依赖数量极度敏感、拒绝引入大型配置框架(如 Viper)的轻量级场景。

使用风险

  • 工具链网络依赖:首次 go get 需从配置的 Go module proxy 拉取代码,若代理不可用或版本被撤包会导致构建失败。
  • 环境变量污染风险ENV 为常见变量名,可能与系统或其他工具冲突,建议容器化部署时显式注入验证。
  • 测试覆盖率盲区:由于默认回退 prod,单元测试若未显式设置 ENV=dev 将意外执行生产分支逻辑,需配套 CI 环境变量管控。
  • 长期维护不确定性:个人仓库(psyb0t)发布,无企业背书,存在未来归档或 API 变更的可持续性风险。

Goenv 内容

references文件夹
手动下载zip · 5.2 kB
setup.mdtext/markdown
请选择文件