@primal/filesystem v0.0.0-alpha.15
In-memory file-system with Node's fs
API.
Usage
Create instance of FileSystem FileSystem constructor can be initialized with Object that represents filesystem
- '/Users/user/projects/my-project': 'true' -> isDirectory
- '/Users/user/projects/my-project/file': object | Buffer | string -> isFile
const { FileSystem } = require('./packages/filesystem')
const myFileSystem = new FileSystem({
'/Users/user/projects/my-project': 'true',
'/Users/user/projects/my-project/file': Buffer.from('Dummy data'),
})
Create as many filesystem volumes as you need:
const { FileSystem } = require('./packages/filesystem')
const myFileSystem1 = new FileSystem({ '/foo': 'bar' })
const myFileSystem2 = new FileSystem({ '/foo': 'bar' })
Read & write files from/in FileSystem:
- can write files in non-existing directories
const { FileSystem } = require('./packages/filesystem')
const myFileSystem = new FileSystem()
myFileSystem.writeFileSync(
'/Users/user/projects/my-project/buffer',
Buffer.from('TEST BUFFER')
)
myFileSystem.readFileSync('/Users/user/projects/my-project/buffer') //<Buffer 54 45 53 54 20 42 55 46 46 45 52>
myFileSystem.readFileSync('/Users/user/projects/my-project/buffer', 'utf-8') // TEST BUFFER
Read & write directories from/in FileSystem:
mkdirSync
: creates directories ONLY in existent directories- if you want to create directory recursive use
mkdirpSync
const { FileSystem } = require('./packages/filesystem')
const myFileSystem = new FileSystem()
myFileSystem.mkdirSync('/Users/user') // throws FileSystemError
myFileSystem.mkdirpSync('/Users/user')
myFileSystem.toJson() // { '/': 'true', Users: 'true', 'Users/user': 'true' }
Deleting directory
statSync(path).isDirectory()
returns true/falsestatSync(path).isFile()
returns true/false- if
rmdirSync(path)
path doesn't existFileSystemError
will be thrown
if (myFileSystem.statSync('/dir/subdir').isDirectory()) {
myFileSystem.rmdirSync('/dir/subdir')
}
Export to JSON:
myFileSystem.mkdirpSync('/dir/subdir')
myFileSystem.writeFileSync('/test.txt', { test: 'string' })
myFileSystem.writeFileSync('/script.sh', 'sudo rm -rf *')
myFileSystem.toJSON()
will return :
{
"/": "true",
"dir": "true",
"dir/subdir": "true",
"test.txt": { "test": "string" },
"script.sh": "sudo rm -rf *"
}
######where 'true' means that is 'Directory'
Write file from FileSystem to Disk:
- writes only files
- if some folders doesn't exist in system
FileSystemError
will be thrown
myFileSystem.mkdirpSync('/Users/user/project/folder')
myFileSystem.writeFileSync('/Users/user/project/folder/file.txt', {
test: 'string',
})
myFileSystem.toDisk('/Users/user/project/folder/file.txt')
myFileSystem.toDisk('/Users/user/project/folder/non-existing-folder/file/') //throw FileSystemError
Using streams to write/read files
myFileSystem.createWriteStream('/file').end('Hello')
myFileSystem.readFileSync('/file', 'utf-8') // 'Hello'
The following example pipes all of the data from the readable into a file named file.txt
myFileSystem.writeFileSync('/file', { test: 'string' })
const readable = myFileSystem.createReadStream('/file')
const writable = myFileSystem.createWriteStream('file.txt')
readable.pipe(writable)
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago