Skip to content

lupodevelop/envie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

envie logo

Package VersionHex DocsBuilt with GleamLicense: MIT

envie

Type-safe environment configuration for Gleam. Cross-platform, zero runtime dependencies.

Why the name? envy was taken on Hex, so envie it is. French for desire. You shouldn't be jealous of other languages' config loaders, just desire a better one. 🥐

Install

gleam add envie
import envie

pub fn main() {
  let port = envie.get_int("PORT", 3000)
  let debug = envie.get_bool("DEBUG", False)
}

Features

  • read/write env vars with no ceremony
  • type-safe getters with defaults (get_int, get_bool, ...)
  • strict require_* validators (port, url, range, allow-list, ...)
  • composable decoders for custom rules
  • .env file loading with overrides and multi-file priority
  • structured schema for full app configuration
  • inspect traces for debugging which values were used
  • testing helpers that restore env after each test
  • works on Erlang, Node.js, Bun, Deno; safe no-op in browsers

Documentation

Requirements

Gleam 1.14+, OTP 27+ on BEAM. Only gleam_stdlib.


Made with Gleam 💜

About

Cross-platform type-safe environment variables for Gleam

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors