https://github.com/gobwas/json-compile
Compilation of references in json.
https://github.com/gobwas/json-compile
Last synced: about 1 month ago
JSON representation
Compilation of references in json.
- Host: GitHub
- URL: https://github.com/gobwas/json-compile
- Owner: gobwas
- Created: 2014-08-22T09:17:49.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2014-12-03T13:05:17.000Z (over 10 years ago)
- Last Synced: 2025-02-25T14:46:26.806Z (2 months ago)
- Language: JavaScript
- Size: 148 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# [json](http://json.org)-compile
[](http://badge.fury.io/js/json-compile)
[](https://travis-ci.org/gobwas/json-compile)> Compiles references in given json file into single structure
## Overview
Its about simple inheritance of json configs in your applications. It simply finds out all `$ref` keys inside given file
and replaces them with referenced values. First will be replaced outer references (to outer files), second - inner references
(in started with `#` symbol).## Example
Imagine you have base config and his extension.
```js
// inside /dir/base/extension.json
{
"$ref": "../base.json",
"host": "127.0.0.1",
"port": "8080"
}// inside /dir/base.json
{
"name": "json-compile"
}
```Inside your program you could get compiled config with `json-compile` module:
```js
// inside your program
var compile = require("json-compile"),
path = require("path");compile(path.resolve(__dirname, "./dir/base/extension.json"), function(err, config) {
console.log(typeof config); // object
console.log(config); // { "host": "127.0.0.1", "port": "8080", "name": "json-compile" }
});
```## API
### compile(file, [options], [callback])
#### file
Type: `String`
Path to input json. Could be absolute, or relative. If relative - then `basedir` property in options must be set.
#### options
Type: `Object`
Options.
Property | Necessary | Type | Description
-------------|-----------|------------|---------------------
[basedir] | no | `string` | Path to directory, where to find for relatively given path.
[loader] | no | `Function` | Loader for output references. Default uses `fs` module. Has signature `(path, callback)`, where callback is `callback(err, contents)`
[merge] | no | `boolean` | Merge or not properties, if they are `Object`. Default to `true`.#### callback
Has signature `(err, result)` where `err` could be a `null` or instance of `Error`, and result is an `Object` with compiled json.