An open API service indexing awesome lists of open source software.

https://github.com/animatedcreativity/node-file-config

Automatically read config from files for a project. If changes are made to the config files, a new copy of config is fetched next time.
https://github.com/animatedcreativity/node-file-config

Last synced: 4 months ago
JSON representation

Automatically read config from files for a project. If changes are made to the config files, a new copy of config is fetched next time.

Awesome Lists containing this project

README

          

# node-file-config

Automatically read config from files for a project. If changes are made to the config files, a new copy of config is fetched next time.

**Usage:**

```
var fileConfig = require("node-file-config");
var config = new fileConfig("");
console.log(config.get(userConfig, files));
```

- `userConfig`: Optional. If any user config is provided it will not be overridden and will just combine with the config read from the files.
- `files`: Additional config files array if you want to look for config in more files.

The module checks for these config files automatically even if no additional files are provided:

- ../../.js
- ../.js
- ./.js
- ../../.js
- ../.js
- ./.js
- ./config.js
- path.dirname(require.main.filename) + /.js
- path.dirname(require.main.filename) + /config.js
- __dirname + .js
- __dirname + config.js

The priority of config is decided in the same order. But, if you specify extra config `files` as mentioned above, they will have top priority in the order of array provided.

All data gets combined with `userConfig` from all the found config files.

---------------------------------------

**Example:**

Files...

../../.js

```
exports = module.exports = function() {
return {
test1: "test123", // different than user config, check below
test2: "test456", // different than user config, check below
test3: "test3"
}
};
```

./.js

```
exports = module.exports = function() {
return {
test3: "test10", // different than the previous config file
test4: "test4",
test5: "test5"
}
};
```

./config.js

```
exports = module.exports = function() {
return {
test5: "test50", // different than the previous config file
test6: "test6",
test7: "test7"
}
};
```

Let's fetch...

```
var fileConfig = require("node-file-config");
var config = new fileConfig("");
console.log(config.get({test1: "test1", test2: "test2"}));
```

Will give...

```
{
test1: "test1",
test2: "test2",
test3: "test3",
test4: "test4",
test5: "test5",
test6: "test6",
test7: "test7"
}
```

Now, let's say you made changes on the go...

../../.js

```
exports = module.exports = function() {
return {
test1: "test123", // different than user config, check below
test2: "test456", // different than user config, check below
test3: "test3",
test5: "testChanged",
test8: "testNew"
}
};
```

When fetching again next time while project is still running...

```
console.log(config.get({test1: "test1", test2: "test2"}));
```

Will give...

```
{
test1: "test1",
test2: "test2",
test3: "test3",
test4: "test4",
test5: "testChanged",
test6: "test6",
test7: "test7",
test8: "testNew"
}
```