Merge branch 'dev' of github.com:christav/envconf into set-via-object-literal
This commit is contained in:
Коммит
8fde2c616a
31
README.md
31
README.md
|
@ -5,8 +5,7 @@ This module makes it easy to use express-style configuration for any application
|
|||
It allows your users to define separate configuration environments in code
|
||||
and switch between sets of configuration via a single environment variable.
|
||||
|
||||
|
||||
Usage:
|
||||
## Basic Usage
|
||||
|
||||
```javascript
|
||||
|
||||
|
@ -50,8 +49,28 @@ process.env.MY_LIBRARY_VAR = 'production';
|
|||
c.default.get('settingTwo').should.equal('prodValue');
|
||||
```
|
||||
|
||||
Do you want to add helper methods for your specific configuration? It's easy
|
||||
with a config customizer:
|
||||
## Setting Getters
|
||||
|
||||
Instead of a setting a simple value, you can instead use the setFunc method to
|
||||
provide a function that will run when the value is requested:
|
||||
|
||||
```javascript
|
||||
var c2 = envconf.createConfig();
|
||||
|
||||
c2.configure('development', function (c) {
|
||||
c.setFunc('settingOne', function () { return 'This value came from a function'; });
|
||||
});
|
||||
|
||||
c2.get('settingOne').should.equal('This value came from a function');
|
||||
```
|
||||
|
||||
This can be handy if you want to have a default value that you need to derive from
|
||||
ambient state.
|
||||
|
||||
## Customizing the config object
|
||||
|
||||
Do you want to add helper methods for your specific configuration? Or set specific
|
||||
values in every configuration? It's easy with a config customizer:
|
||||
|
||||
```javascript
|
||||
|
||||
|
@ -73,6 +92,8 @@ c3.configure('production', function (c) {
|
|||
});
|
||||
```
|
||||
|
||||
## Saving and Restoring config values
|
||||
|
||||
Are you making changes to a global configuration in your unit tests, and want
|
||||
to ensure you've restored the state after your test? Use a snapshot:
|
||||
|
||||
|
@ -98,6 +119,8 @@ c4.get('originalValue').should.equal('one');
|
|||
|
||||
Snapshot/restore also saves and restores any child configurations.
|
||||
|
||||
## Temporary Configs
|
||||
|
||||
Similarly, you might want to set up a configuration and then be able
|
||||
to throw it away without giving it a name. Easy:
|
||||
|
||||
|
|
|
@ -56,7 +56,12 @@ function Config(parent, defaultEnvVar, customizer) {
|
|||
};
|
||||
|
||||
config.set = function (setting, value) {
|
||||
settings[setting] = value;
|
||||
settings[setting] = function () { return value; };
|
||||
return this;
|
||||
};
|
||||
|
||||
config.setFunc = function (setting, getter) {
|
||||
settings[setting] = getter;
|
||||
return this;
|
||||
};
|
||||
|
||||
|
@ -67,7 +72,7 @@ function Config(parent, defaultEnvVar, customizer) {
|
|||
}
|
||||
return undefined;
|
||||
}
|
||||
return settings[setting];
|
||||
return settings[setting]();
|
||||
};
|
||||
|
||||
config.has = function (setting) {
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
"Rodrigues, Andre <andrerod@microsoft.com>",
|
||||
"Tavares, Chris <ctavares@microsoft.com>"
|
||||
],
|
||||
"version": "0.0.3",
|
||||
"version": "0.0.4",
|
||||
"description": "a module for express-style programmatic configuration",
|
||||
"main": "lib/index.js",
|
||||
"tags": ["config", "environment"],
|
||||
"keywords": ["config", "configuration", "environment"],
|
||||
"licenses": [ { "type": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0" } ],
|
||||
"devDependencies": {
|
||||
"mocha": "~1.9.0",
|
||||
"mocha": "~1.12.0",
|
||||
"should": "~1.2.2",
|
||||
"sinon": "*",
|
||||
"jshint": "*"
|
||||
|
|
|
@ -385,3 +385,27 @@ describe('Temporary environments', function () {
|
|||
customizer.callCount.should.equal(2);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Setting getters', function () {
|
||||
var c;
|
||||
|
||||
beforeEach(function () {
|
||||
c = envconf.createConfig();
|
||||
});
|
||||
|
||||
it('should call getter when retrieving', function () {
|
||||
function getter() { return 'a value'; }
|
||||
var spy = sinon.spy(getter);
|
||||
c.setFunc('setting', spy);
|
||||
c.get('setting').should.equal('a value');
|
||||
spy.callCount.should.equal(1);
|
||||
});
|
||||
|
||||
it('should not be invoked when set using set method', function () {
|
||||
function getter() { return 'a value'; }
|
||||
var spy = sinon.spy(getter);
|
||||
c.set('setting', spy);
|
||||
c.get('setting').should.equal(spy);
|
||||
spy.callCount.should.equal(0);
|
||||
});
|
||||
});
|
||||
|
|
Загрузка…
Ссылка в новой задаче