A flexible configuration package for Go applications that combines environment variables, .env
files, default values, and validation.
- Load configuration from environment variables
- Support for
.env
files - Set default values using struct tags
- Validate configuration using struct tags
- Configurable prefix for environment variables
- Optional validation and
.env
file loading
go get github.com/kfreiman/x/config
type Config struct {
Host string `env:"HOST" validate:"required"`
Port int `env:"PORT" default:"8080"`
Debug bool `env:"DEBUG" default:"false"`
Optional string `env:"OPTIONAL"`
}
func main() {
cfg := &Config{}
err := config.Load(cfg)
if err != nil {
log.Fatal(err)
}
}
cfg := &Config{}
err := config.Load(cfg,
config.WithPrefix("APP_"), // Use APP_ prefix for env vars
config.SkipEnvFile(), // Skip loading .env file
config.SkipValidation(), // Skip validation
)
Set environment variables directly or via .env
file:
HOST=localhost
PORT=9090
DEBUG=true
WithPrefix(prefix string)
: Add prefix to environment variable namesSkipEnvFile()
: Skip loading.env
fileSkipValidation()
: Skip struct validation
- godotenv - For
.env
file support - env - For environment variable parsing
- validator - For struct validation
- defaults - For default values
MIT License