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.
npm install --save file-it
OR
yarn add file-it
import fileIt from "file-it";
OR
const fileIt = require("file-it");
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
filename
the full file pathkey
the name of the element in the json filevalue
the value you want to set
const fileIt = require('file-it')
const file = '/tmp/data.json'
fileIt.setJsonValue(file, "hello", "universe", {spaces: 2});
filename
the full file pathkey
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"
filename
the full file paththrows
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)
})
filename
the full file paththrows
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)
})
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)
})
filename
the full file path
const fileIt = require('file-it')
const file = '/tmp/data.json'
console.log(fileIt.readContentFileSync(file))
filename
the full file paththrows
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))
filename
: the full file pathcontent
: The string object to writethrows
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))
filename
: the full file pathobj
: The json object to append to the fileoptions
: 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)
})
filename
: the full file pathcontent
: 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)
})
const fileIt = require('file-it')
const file = '/tmp/data.txt'
const content = "hello world"
fileIt.writeContentFile(filename, content)
filename
: the full file pathobj
: The json object to writeoptions
: 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)
})
filename
: the full file pathobj
: The json object to writeoptions
: 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' })
filename
: the full file pathattribute
: the name of the attribute within a json elementdirection
: 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")