A library with easy to use, mind blowing file-system tools for NodeJS. Based on FS! with chainable methods, sync first approach, and amazing UX.
To install with NPM use:
npm i ray-fs --save
Then attach it to your file using:
const fs = require('ray-fs');
// use code here
The ray-fs library has the following methods and properties:
- .value: To return the output of the previous method in the chain.
For example:-
fs
.lsDir() // gets the list of Directories
.value // returns the list of Directories
- .logVal(): To
console.log()
the output of the previous method in chain. For example:-
fs
.lsFile() // gets the list of Files
.logVal() // logs the list of Files
-
.cd(dirName): To change the "working-directory" to
dirName
. A virtual version of shell'scd
, it does not allow a movement to directories deeper then depth=1. -
.ls(): To get a list of all the Files in the "working-directory".
-
.exists(fileURL): To check if a FS item (like a File) exists at
fileURL
. -
.isFile(fileURL): To check if
fileURL
is a File or not! (a Directory maybe) -
.isDir(dirURL): To check if
dirURL
is a Direcotry or not! -
.lsMatches(filterFunction): To get a list of all items in the "working-directory" that matches
filterFunction
.
fs
// To get a list of all items in the "working-directory" that have names ending in ".js"
.lsMatches(item => /.js$/.test(item))
.value // To return that list
Better written as:
fs
// To get a list of all Javascript Files in the "working-directory"
.lsMatches(item => fs.isFile(item).value && /.js$/.test(item))
.value // To return that list
-
.lsDir(): To get a list of all Directories in the "working-directory".
-
.lsFile(): To get a list of all Files in the "working-directory".
-
.version(): To get the current version of
ray-fs
. -
.write(fileURL, content): To write the
content
into the file atfileURL
. -
.read(fileURL).value: To read the content of the file at
fileURL
. The path used must be relative from the root directory of your project, e.g. "./README.md". -
.writeJSON(fileURL, json): To write the
json
into the file atfileURL
. -
.readJSON(fileURL).value: To read/import the JSON content of the file at
fileURL
. -
.updateJSON(file, callback): TO update the json object in a .json file. For example:
const fs = require('ray-fs');
const file = "june.json";
fs
.updateJSON(file, (json) => {
json.oldProp = "replace old prop's value with new value";
json.newProp = "adds a new prop with a new value";
return json;
});
-
.readArray(fileURL).value: To read/import the content of the file at
fileURL
as an Array of lines of content. -
.push(fileURL, content): To add the
content
below the existing content of the file atfileURL
. -
.rm(url): To delete the item at
url
. -
.cp(url, destinationURL): To copy the item at
url
todestinationURL
. -
.mv(url, destinationURL): To move the item at
url
todestinationURL
. -
.mkdir(dirName): To create a new Directory named
dirName
. -
.logDir(): To log the name of the "working-directory".
-
.validFileName(fileName): To check if a file name complies with the file naming rules. (beta version)
-
.validDirName(dirName): To check if a directory name complies with the naming rules. (beta version)
-
.stream(responseBody, filePath, errorCallback, sucessCallback): To pipe a
response.body
to afilePath
. -
.initDir(dirName): To check if a directory exists, if no then create it.
-
.initDirs(dirName1, dirName2, ...): To check if all of the provided directories exist, if any don't then create them.
-
.initFile(fileName, fileContent): To check if a file exists, if no then create it, then add the provided
fileContent
to it. ThefileContent
paremeter can be passed a JSONobject
or aString
.
Note: The documentation is incomplete, and will be completed soon.
Chain functions to make code more readable!
const fs = require('ray-fs');
fs
.mkdir('myProject')
.cd('myProject')
.write('myFile.txt', 'Hello World!')
.cp('myFile.txt', 'myGreeting.txt')
.read('myFile.txt')
.logVal()
.read('myGreeting.txt')
.logVal()
The .value prop and the .
- Absolute URL's aren't allowed, instead use .cd() to change the "working-directory" first!
- Chain for the betterment of code, don't chain where it dosen't make sense.
- This library is not meant to replace
fs
, it is meant to be an alternative way to write code that can also be written withfs
. This library will allow you to write significaltly shorter and clearer code.
- Async methods.
- color logs.