# 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.

Latest version **0.1.0** (published 2019-04-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install node-file-config
pnpm add node-file-config
yarn add node-file-config
bun add node-file-config
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2019-04-15 |
| First published | 2019-03-21 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | 8.x |
| Dependencies | 1 |
| Unpacked size | 5.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | rehmat |
| Keywords | node, file, config, project, automatic, refresh |

## Links

- npm: https://www.npmjs.com/package/node-file-config
- Repository: https://github.com/animatedcreativity/node-file-config
- Homepage: https://github.com/animatedcreativity/node-file-config#readme
- Issues: https://github.com/animatedcreativity/node-file-config/issues
- npm.io page: https://npm.io/package/node-file-config

## Dependencies (1)

- [node-sanitize-options](https://npm.io/package/node-sanitize-options.md) ^0.0.6

## Alternatives

- [unionfs](https://npm.io/package/unionfs.md) — 2.2M weekly downloads
- [path-starts-with](https://npm.io/package/path-starts-with.md) — 35.9K weekly downloads
- [redzip](https://npm.io/package/redzip.md) — 1.2K weekly downloads
- [vscode-anymatch](https://npm.io/package/vscode-anymatch.md) — 848 weekly downloads
- [@ledgerhq/coin-filecoin](https://npm.io/package/@ledgerhq/coin-filecoin.md) — 793 weekly downloads

## Recent versions

- 0.1.0 (latest) — 2019-04-15
- 0.0.9 — 2019-04-15
- 0.0.8 — 2019-04-15
- 0.0.7 — 2019-04-15
- 0.0.6 — 2019-04-15
- 0.0.5 — 2019-03-21
- 0.0.4 — 2019-03-21
- 0.0.3 — 2019-03-21
- 0.0.2 — 2019-03-21
- 0.0.1 — 2019-03-21

## 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("<project_name>");
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:

- ../../<project_folder_name>.js
- ../<project_folder_name>.js
- ./<project_folder_name>.js
- ../../<project_name>.js
- ../<project_name>.js
- ./<project_name>.js
- ./config.js
- path.dirname(require.main.filename) + /<project_name>.js
- path.dirname(require.main.filename) + /config.js
- __dirname + <project_name>.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...

../../<project_name>.js

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

./<project_name>.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("<project_name>");
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...

../../<project_name>.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"
}
```

---
_Source: https://npm.io/package/node-file-config · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
