ReasonML bindings to the nconf library.
This is a very rough implementation that will enable very simple use cases.
type config = {
..
"THING1": string,
"THING2": int
};
let baseDir = "/path/to/somewhere"
let appConfig: config =
Nconf.(
make()
|> argv()
|> env()
|> filePathNamed("locals", {j|$baseDir/config/locals.json|j})
|> filePathNamed("defaults", {j|$baseDir/config/defaults.json|j})
|> get()
);
967: syntax error, consider adding a `;' before
This is accomplished from an internal module written in ReasonML. The internal module is a near 1-to-1 copy of nconf-js
let appConfig =
Nconf.(
make()
|> jsFilePathNamed("example", {j|/path/to/file.js|j})
|> get()
);
let appConfig =
let open Nconf in
((make ()) |> (jsFilePathNamed "example" {j|/path/to/file.js|j})) |>
(get ())
let appConfig =
Nconf.(
make()
|> setLiteral("some:key:path", `Str("foo"))
|> get()
)
let appConfig =
let open Nconf in
((make ()) |> (setLiteral "some:key:path" (`Str "foo"))) |> (get ())
let appConfig =
Nconf.(
make()
|> setLiteral("some:key:path", `Int(42))
|> get()
)
let appConfig =
let open Nconf in
((make ()) |> (setLiteral "some:key:path" (`Int 42))) |> (get ())
let appConfig =
Nconf.(
make()
|> setObject("some:key:path", { "foo": "bar" })
|> get()
)
let appConfig =
let open Nconf in
((make ()) |> (setObject "some:key:path" ([%bs.obj { foo = "bar" }]))) |>
(get ())
let appConfig =
Nconf.(
make()
|> jsFilePathNamed("example", {j|./__tests__/assets/data.js|j})
)
let username =
switch(Nconf.getKey(appConfig, "obj:auth:username") |> Js.Nullable.to_opt) {
| None => Js.Exn.raiseError("Could not retrieve username")
| Some(x) => x
};
967: syntax error, consider adding a `;' before
Inside of a BuckleScript project:
yarn install --save reason-nconf
Then add reason-nconf
to your bs-dependencies
in bsconfig.json
:
{
"bs-dependencies": [
"reason-nconf"
]
}
See the Usage section above...
Mostly everything...