file-it
Helps minimize the amount of fs
read and write logic, try/catch
logic, writes clean UTF8 json content, and cleans up byte order mark and newline characters to cleanly read and parse json content.
Installation
npm install --save file-it
OR
yarn add file-it
Import or Require
import fileIt from "file-it";
OR
const fileIt = require("file-it");
API
-
setJsonValue(filename, key, value, [options])
- create or update a top level json value
-
getJsonValue(filename, key)
- fetch a top level json value
-
readJsonArraySync(filename)
- returns a json array object from a stringified json array file
-
readJsonLinesSync(filename)
- returns a json array object from a file containing stringified objects appended in a file
-
readContentFile(filename)
- returns the string content of a file asynchronously
-
readContentFileSync(filename)
- returns the string content of a file synchronously
-
readJsonFile(filename, callback)
- returns a json object from a file asynchronously
-
readJsonFileSync(filename)
- returns a json object from a file synchronously
-
appendJsonFileSync(filename, obj, [options])
- append a json object to a file synchronously
-
writeContentFile(filename, content, callback)
- write string content to a file asynchronously
-
writeContentFileSync(filename, content)
- write string content to a file synchronously
-
writeJsonFile(filename, obj, [options], callback)
- write a json object to a file asynchronously
-
writeJsonFileSync(filename, obj, [options])
- write a json object to a file synchronously
-
findSortedJsonElement(filename, attribute, direction)
- returns the top element sorted by the specified object attribute based on sort direction. "desc" is used by default
setJsonValue(filename, key, value, [options])
-
filename
the full file path -
key
the name of the element in the json file -
value
the value you want to set
const fileIt = require('file-it')
const file = '/tmp/data.json'
fileIt.setJsonValue(file, "hello", "universe", {spaces: 2});
getJsonValue(filename, key)
-
filename
the full file path -
key
the name of the element in the json file
const fileIt = require('file-it')
const file = '/tmp/data.json'
await fileIt.setJsonValue(file, "hello", "universe", {spaces: 2});
const val = await fileIt.getJsonValue(file, "hello");
console.log("val: ", val); // prints out "universe"
readJsonArraySync(filename)
-
filename
the full file path-
throws
IfJSON.parse
throws an error, pass this error to the callback
-
const fileIt = require('file-it')
const file = '/tmp/jsonArrayFile.json'
fileIt.readJsonArraySync(file, function (err, data) {
if (err) console.error(err)
else console.log(data)
})
readJsonLinesSync(filename)
-
filename
the full file path-
throws
IfJSON.parse
throws an error, pass this error to the callback
-
const fileIt = require('file-it')
const file = '/tmp/linesOfJsonData.json'
fileIt.readJsonLinesSync(file, function (err, data) {
if (err) console.error(err)
else console.log(data)
})
readContentFile(filename)
-
filename
the full file path
const fileIt = require('file-it')
const file = '/tmp/data.json'
fileIt.readContentFile(file, function (err, data) {
if (err) console.error(err)
else console.log(data)
})
readContentFileSync(filename)
-
filename
the full file path
const fileIt = require('file-it')
const file = '/tmp/data.json'
console.log(fileIt.readContentFileSync(file))
readJsonFile(filename)
-
filename
the full file path-
throws
IfJSON.parse
throws an error, pass this error to the callback
-
const fileIt = require('file-it')
const file = '/tmp/data.json'
fileIt.readJsonFile(file, function (err, data) {
if (err) console.error(err)
else console.log(data)
})
You can also use this method with promises. The readJsonFile
method will return a promise if you do not pass a callback function.
const fileIt = require('file-it')
const file = '/tmp/data.json'
fileIt.readJsonFile(file)
.then(data => console.log(data))
.catch(error => console.error(error))
readJsonFileSync(filename)
-
filename
: the full file path -
content
: The string object to write-
throws
If an error is encountered reading or parsing the file, throw the error
-
const fileIt = require('file-it')
const file = '/tmp/data.json'
console.log(fileIt.readJsonFileSync(file))
appendJsonFileSync(filename, obj, [options])
-
filename
: the full file path -
obj
: The json object to append to the file -
options
: Pass in anyfs.appendFileSync
options or setreplacer
for a JSON replacer. Can also pass inspaces
and overrideEOL
string.
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.appendJsonFileSync(filename, content, function (err) {
if (err) console.error(err)
})
writeContentFile(filename, content, callback)
-
filename
: the full file path -
content
: The string object to write
const fileIt = require('file-it')
const file = '/tmp/data.txt'
const content = "hello world"
fileIt.writeContentFile(filename, content, function (err) {
if (err) console.error(err)
})
writeContentFileSync(filename, content)
const fileIt = require('file-it')
const file = '/tmp/data.txt'
const content = "hello world"
fileIt.writeContentFile(filename, content)
writeJsonFile(filename, obj, [options], callback)
-
filename
: the full file path -
obj
: The json object to write -
options
: Pass in anyfs.writeFile
options or setreplacer
for a JSON replacer. Can also pass inspaces
and overrideEOL
string.
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFile(file, obj, function (err) {
if (err) console.error(err)
})
Or use with promises as follows:
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFile(file, obj)
.then(res => {
console.log('Write complete')
})
.catch(error => console.error(error))
formatting with spaces:
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFile(file, obj, { spaces: 2 }, function (err) {
if (err) console.error(err)
})
overriding EOL:
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFile(file, obj, { spaces: 2, EOL: '\r\n' }, function (err) {
if (err) console.error(err)
})
appending to an existing JSON file:
You can use fs.writeFile
option { flag: 'a' }
to achieve this.
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFile(file, obj, { flag: 'a' }, function (err) {
if (err) console.error(err)
})
writeJsonFileSync(filename, obj, [options])
-
filename
: the full file path -
obj
: The json object to write -
options
: Pass in anyfs.writeFileSync
options or setreplacer
for a JSON replacer. Can also pass inspaces
and overrideEOL
string.
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFileSync(file, obj)
formatting with spaces:
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFileSync(file, obj, { spaces: 2 })
overriding EOL:
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFileSync(file, obj, { spaces: 2, EOL: '\r\n' })
appending to an existing JSON file:
You can use fs.writeFileSync
option { flag: 'a' }
to achieve this.
const fileIt = require('file-it')
const file = '/tmp/data.json'
const obj = { hello: 'World' }
fileIt.writeJsonFileSync(file, obj, { flag: 'a' })
findSortedJsonElement(filename, attribute, direction?)
-
filename
: the full file path -
attribute
: the name of the attribute within a json element -
direction
: the sort direction ["asc" | "desc"] - default is desc
const fileIt = require('file-it')
const file = '/tmp/data.json'
const topElement = fileIt.findSortedJsonElement(file, "count")
const fileIt = require('file-it')
const file = '/tmp/data.json'
const bottomElement = fileIt.findSortedJsonElement(file, "count", "asc")