viper
koanf
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
viper
-
Proxy Server in Go
The code uses Viper to load configuration files in the application.
- API completa em Golang - Parte 2
-
What 3rd-party libraries do you use often/all the time?
github.com/spf13/viper
- API completa em Golang - Parte 1
-
Building RESTful API with Hexagonal Architecture in Go
Instead of directly accessing environment variables with os.Getenv(), integrating a configuration handler like viper might make it maintainable.
-
What is the most common approach to configure a backend app?
I guess most people are using https://github.com/spf13/viper but I don't know if I should read everything from
-
Could I get a code review?
Use Viper for config file or environmental variable configuration -- it's going to save you a whole lot of time.
-
Which packages do you recommend for building cli tools?
Cobra and Viper.
-
Library for Python similar to Go's Viper / 12 Factor
I've mostly been using https://github.com/spf13/viper of late for my go projects. It supports the standard config formats, (json, yaml, toml etc) and lets you override any value with a ENV value.
-
Two ways to provide configuration: command-line, yaml file.
Not only that, the "unmarshall to struct" method doesn't work at all for environment variables. https://github.com/spf13/viper/issues/188
koanf
-
App init and graceful watch lib recommendations ?
For configuration, I like Koanf.
-
Two ways to provide configuration: command-line, yaml file.
Of course. You should always use a good config package. caarlos0/env is okay but https://github.com/knadh/koanf is a better all around solution imo.
-
Golang equivalent of Python’s click (CLT framework)
You can also use Viper with urfave/cli, or you can replace Viper with knadh/koanf, which I personally prefer.
-
Viper – Go Configuration with Fangs
Use viper with care. It has some dangerous fundamental flaws [1]. We got bitten hard, submitted a PR [2] and followed up for a year and a half to no avail, before I went ahead and reinvented the wheel and wrote koanf (plug), specifically to avoid viper's flaws.
Most importantly:
- Breaks JSON, YAML, TOML etc. language specs by forcibly lowercasing all keys internally. Dangerous because it can silently merge differently cased config keys into lowercase.
- Hard codes big unnecessary dependencies into the core, significantly bloating build sizes. No separation or abstraction.
- What are some good open source project to read when learning Go?
-
Coral, a friendly Cobra fork with nearly all its features, but only 4 dependencies
Came across this the other day https://github.com/knadh/koanf as an alternative to Viper.
-
What are your favorite packages to use?
https://github.com/knadh/koanf for config management. Readme contains why it's a good alternative to viper.
-
Is Viper necessary if my app is only using environment variables?
I use Koanf, much simpeler with the same options https://github.com/knadh/koanf
-
I've been using "caarlos0/env" for nearly 4 years? Anything better?
Personally I like: https://github.com/knadh/koanf
What are some alternatives?
godotenv - A Go port of Ruby's dotenv library (Loads environment variables from .env files)
envconfig - Small library to read your configuration from environment variables
kelseyhightower/envconfig - Golang library for managing configuration data from environment variables
cleanenv - ✨Clean and minimalistic environment configuration reader for Golang
mapstructure - Go library for decoding generic map values into native Go structures and vice versa.
ini - Package ini provides INI file read and write functionality in Go
goConfig - goconfig uses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
config - JSON or YAML configuration wrapper with convenient access methods.
go-toml - Go library for the TOML file format
env - A simple and zero-dependencies library to parse environment variables into structs
Gin - Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
node-config - Node.js Application Configuration