https://github.com/othree/node-hjsonfile
API of npm jsonfile, but use hjson format
https://github.com/othree/node-hjsonfile
hjson json node
Last synced: about 2 months ago
JSON representation
API of npm jsonfile, but use hjson format
- Host: GitHub
- URL: https://github.com/othree/node-hjsonfile
- Owner: othree
- License: mit
- Created: 2017-04-05T07:56:58.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-03-05T07:43:53.000Z (over 7 years ago)
- Last Synced: 2025-08-09T07:53:49.179Z (2 months ago)
- Topics: hjson, json, node
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/hjsonfile
- Size: 23.4 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Node.js - hjsonfile
================Easily read/write HJSON files. Based on [jsonfile](https://www.npmjs.com/package/jsonfile).
Why?
----Writing `JSON.stringify()` and then `fs.writeFile()` and `JSON.parse()` with `fs.readFile()` enclosed in `try/catch` blocks became annoying.
Installation
------------npm install --save hjsonfile
API
---### readFile(filename, [options], callback)
`options` (`object`, default `undefined`): Pass in any `fs.readFile` options and to [hjson.parse](https://www.npmjs.com/package/hjson#hjsonparsetext-options).
- `throws` (`boolean`, default: `true`). If `JSON.parse` throws an error, pass this error to the callback.
If `false`, returns `null` for the object.```js
var jsonfile = require('hjsonfile')
var file = '/tmp/data.json'
jsonfile.readFile(file, function(err, obj) {
console.dir(obj)
})
```### readFileSync(filename, [options])
`options` (`object`, default `undefined`): Pass in any `fs.readFileSync` options and to [hjson.parse](https://www.npmjs.com/package/hjson#hjsonparsetext-options).
- `throws` (`boolean`, default: `true`). If `JSON.parse` throws an error, throw the error.
If `false`, returns `null` for the object.```js
var jsonfile = require('hjsonfile')
var file = '/tmp/data.json'console.dir(jsonfile.readFileSync(file))
```### writeFile(filename, obj, [options], callback)
`options`: Pass in any `fs.writeFile` options and to [hjson.stringify](https://www.npmjs.com/package/hjson#hjsonstringifyvalue-options).
```js
var jsonfile = require('hjsonfile')var file = '/tmp/data.json'
var obj = {name: 'JP'}jsonfile.writeFile(file, obj, function (err) {
console.error(err)
})
```**formatting with space:**
```js
var jsonfile = require('hjsonfile')var file = '/tmp/data.json'
var obj = {name: 'JP'}jsonfile.writeFile(file, obj, {space: 2}, function(err) {
console.error(err)
})
```**appending to an existing JSON file:**
You can use `fs.writeFile` option `{flag: 'a'}` to achieve this.
```js
var jsonfile = require('hjsonfile')var file = '/tmp/mayAlreadyExistedData.json'
var obj = {name: 'JP'}jsonfile.writeFile(file, obj, {flag: 'a'}, function (err) {
console.error(err)
})
```### writeFileSync(filename, obj, [options])
`options`: Pass in any `fs.writeFileSync` options and to [hjson.stringify](https://www.npmjs.com/package/hjson#hjsonstringifyvalue-options).
```js
var jsonfile = require('hjsonfile')var file = '/tmp/data.json'
var obj = {name: 'JP'}jsonfile.writeFileSync(file, obj)
```**formatting with space:**
```js
var jsonfile = require('hjsonfile')var file = '/tmp/data.json'
var obj = {name: 'JP'}jsonfile.writeFileSync(file, obj, {space: 2})
```**appending to an existing JSON file:**
You can use `fs.writeFileSync` option `{flag: 'a'}` to achieve this.
```js
var jsonfile = require('hjsonfile')var file = '/tmp/mayAlreadyExistedData.json'
var obj = {name: 'JP'}jsonfile.writeFileSync(file, obj, {flag: 'a'})
```### space
Global configuration to set space to indent JSON files.
**default:** `null`
```js
var jsonfile = require('hjsonfile')jsonfile.space = 4
var file = '/tmp/data.json'
var obj = {name: 'JP'}// json file has four space indenting now
jsonfile.writeFile(file, obj, function (err) {
console.error(err)
})
```Note, it's bound to `this.space`. So, if you do this:
```js
var myObj = {}
myObj.writeJsonSync = jsonfile.writeFileSync
// => this.space = null
```Could do the following:
```js
var jsonfile = require('hjsonfile')
jsonfile.space = 4
jsonfile.writeFileSync(file, obj) // will have 4 spaces indentationvar myCrazyObj = {space: 32}
myCrazyObj.writeJsonSync = jsonfile.writeFileSync
myCrazyObj.writeJsonSync(file, obj) // will have 32 space indentation
myCrazyObj.writeJsonSync(file, obj, {space: 2}) // will have only 2
```