fedor / Node No Config
Licence: mit
Config and resource loader
Stars: ✭ 45
Programming Languages
javascript
184084 projects - #8 most used programming language
Projects that are alternatives of or similar to Node No Config
sitri
Sitri - powerful settings & configs for python
Stars: ✭ 20 (-55.56%)
Mutual labels: config, configuration, configuration-management
Koanf
Light weight, extensible configuration management library for Go. Built in support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper.
Stars: ✭ 450 (+900%)
Mutual labels: config, configuration-management, configuration
libconfini
Yet another INI parser
Stars: ✭ 106 (+135.56%)
Mutual labels: config, configuration, configuration-management
Config
Easiest way to add multi-environment yaml settings to Rails, Sinatra, Pandrino and other Ruby projects.
Stars: ✭ 1,821 (+3946.67%)
Mutual labels: config, configuration-management, configuration
Config Rs
⚙️ Layered configuration system for Rust applications (with strong support for 12-factor applications).
Stars: ✭ 915 (+1933.33%)
Mutual labels: config, configuration-management, configuration
Simple Settings
A simple way to manage your project settings.
Stars: ✭ 165 (+266.67%)
Mutual labels: config, configuration-management, configuration
Ini Parser
Read/Write an INI file the easy way!
Stars: ✭ 643 (+1328.89%)
Mutual labels: config, configuration-management, configuration
superconfig
Access environment variables. Also includes presence validation, type coercion and default values.
Stars: ✭ 33 (-26.67%)
Mutual labels: config, configuration, configuration-management
Strictyaml
Type-safe YAML parser and validator.
Stars: ✭ 836 (+1757.78%)
Mutual labels: config, configuration-management, configuration
parse it
A python library for parsing multiple types of config files, envvars & command line arguments that takes the headache out of setting app configurations.
Stars: ✭ 86 (+91.11%)
Mutual labels: config, configuration, configuration-management
Node Convict
Featureful configuration management library for Node.js
Stars: ✭ 1,855 (+4022.22%)
Mutual labels: config, configuration-management, configuration
nest-typed-config
Intuitive, type-safe configuration module for Nest framework ✨
Stars: ✭ 47 (+4.44%)
Mutual labels: config, configuration, configuration-management
Appconfiguration
Questions, feedback and samples for Azure App Configuration service
Stars: ✭ 116 (+157.78%)
Mutual labels: config, configuration-management, configuration
Configuration
Library for setting values to structs' fields from env, flags, files or default tag
Stars: ✭ 37 (-17.78%)
Mutual labels: config, configuration-management, configuration
Dynaconf
Configuration Management for Python ⚙
Stars: ✭ 2,082 (+4526.67%)
Mutual labels: config, configuration-management, configuration
climatecontrol
Python library for loading settings and config data from files and environment variables
Stars: ✭ 20 (-55.56%)
Mutual labels: config, configuration, configuration-management
dotfiles
My personal app/env configs and dotfiles.
Stars: ✭ 27 (-40%)
Mutual labels: config, configuration, configuration-management
Centraldogma
Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2
Stars: ✭ 378 (+740%)
Mutual labels: config, configuration-management, configuration
Jsonnet
Jsonnet - The data templating language
Stars: ✭ 5,257 (+11582.22%)
Mutual labels: config, configuration
Intro | Quick start | Quick start (ES6) | API | Contributors
Intro
Why not
config
?
Answer. TL;DR: config
separates data to different files based on NODE_ENV
, not resources.
$ npm install no-config
Quick start
// config.js
module.exports = {
redis: {
init: function (params) {
return require('redis').createClient(params)
},
default: {
db: 0,
port: 6379
},
development: {
host: '127.0.0.1'
},
production: {
db: 1,
host: '192.168.0.10'
}
}
}
// index.js
require('no-config')({
config: require('./config')
}).then(
function(conf) {
console.log('ENV', conf.env)
console.log('Redis:', conf.redis.host+':'+conf.redis.port)
conf.redis.instance.set('hello', 'world')
}
)
$ NODE_ENV=development node index.js
ENV development
Redis: 127.0.0.1:6379
Quick start (ES6)
Since no-config returns a promise it is much better to use ES6 generators, arrow functions and co.
If you are not familiar with co, check this step-by-step tutorial
// config.js
module.exports = {
redis: {
init: params => require('redis').createClient(params),
default: {
db: 0,
port: 6379
},
development: {
host: '127.0.0.1'
},
production: {
db: 1,
host: '192.168.0.10'
}
}
}
// index.js
'use strict'
const co = require('co')
co(function* () {
let config = require('./config')
let conf = yield require('no-config')({config})
console.log('ENV', conf.env)
console.log('Redis:', conf.redis.host+':'+conf.redis.port)
conf.redis.instance.set('hello', 'world')
})
API
Loader
require('no-config')(parameters)
Loads resources from parameters.config
based on NODE_ENV
environment variable. Returns a Promise which resolves ones all resources are initialized.
Parameters
Name | Required? | Type | Default | Description |
---|---|---|---|---|
config |
Required | Object | Configuration object | |
init |
Optional | List of strings | All Resources | Resources to initialize |
verbose |
Optional | Boolean | false |
Print resource input prior to call its init() function |
mask_secrets |
Optional | Boolean | true |
if verbose === true will hide input value if its key contains substrings: secret , token , key , pass or pwd
|
Configuration object
Every high-level key in configuration object is a resource name.
Name | Required? | Type | Default | Description. Handling |
---|---|---|---|---|
<RESOURCE> |
Optional | Object | Resource configuration | |
<RESOURCE>.default |
Optional | Object | {} |
Default values |
<RESOURCE>.<ENV> |
Optional | Object | {} |
ENV specific values. If a key duplicates default key, env-specific value is used |
<RESOURCE>.init |
Optional | Function, Generator function | Called to initalize resource, <RESOURCE>.init(result) . If returns Promise or Generator, it got resolved with co. Result is saved to result.instance . |
Contributors
Fedor Korshunov - view contributions
Anurag Sharma - view contributions
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].