fsify
fsify copied to clipboard
Convert an array of objects into a persistent or temporary directory structure.
fsify
Convert an array of objects into a persistent or temporary directory structure.
Contents
- Description
- Install
- Usage
- Structure with content
- Deeply nested structure
- Temporary file in existing directory
- Structure from
tree
- API
- Instance API
- Structure
- Directory
- File
Description
fsify creates a persistent or temporary directory structure from an array of objects. It's like the opposite of the Linux and Unix tree command.
Install
npm install fsify
Usage
Structure with content
.
├── dirname
│ └── filename
└── filename
const fsify = require('fsify')()
const structure = [
{
type: fsify.DIRECTORY,
name: 'dirname',
contents: [
{
type: fsify.FILE,
name: 'filename',
contents: 'data'
}
]
},
{
type: fsify.FILE,
name: 'filename',
contents: 'data'
}
]
fsify(structure)
.then((structure) => console.log(structure))
.catch((error) => console.error(error))
Deeply nested structure
.
└── dirname
└── dirname
└── filename
const fsify = require('fsify')()
const structure = [
{
type: fsify.DIRECTORY,
name: 'dirname',
contents: [
{
type: fsify.DIRECTORY,
name: 'dirname',
contents: [
{
type: fsify.FILE,
name: 'filename'
}
]
}
]
}
]
fsify(structure)
.then((structure) => console.log(structure))
.catch((error) => console.error(error))
Temporary file in existing directory
dirname/
└── filename
const fsify = require('fsify')({
cwd: 'dirname/',
persistent: false
})
const structure = [
{
type: fsify.FILE,
name: 'filename'
}
]
fsify(structure)
.then((structure) => console.log(structure))
.catch((error) => console.error(error))
Structure from tree
tree is a Linux and Unix command that lists the contents of directories in a tree-like format. It's a helpful CLI to view the structure of your file system.
tree -J --noreport ./* > tree.json
const fs = require('fs')
const fsify = require('fsify')()
const structure = require('./tree')
fsify(structure)
.then((structure) => console.log(structure))
.catch((error) => console.error(error))
API
Usage
const fsify = require('fsify')()
const fsify = require('fsify')({
cwd: process.cwd(),
persistent: true,
force: false
})
Parameters
options{?Object}Options.cwd{?String}- Custom relative or absolute path. Defaults toprocess.cwd().persistent{?Boolean}- Keep directories and files even when the process exists. Defaults totrue.force{?Boolean}- Allow deleting the current working directory and outside. Defaults tofalse.
Returns
{Function}({?Array})fsify instance.
Instance API
Usage
const structure = [
{
type: fsify.FILE,
name: 'filename'
}
]
fsify(structure)
.then((structure) => console.log(structure))
.catch((error) => console.error(error))
Parameters
structure{?Array}Array of objects containing information about a directory or file.
Returns
{Promise<Array>}A promise that resolves a structure. Equal to the input structure, but parsed and with a absolute path as the name.
Structure
A structure is an array of objects that represents a directory structure. Each object must contain information about a directory or file.
The structure …
.
├── dirname
│ └── filename
└── filename
… is equal to …
[
{
type: fsify.DIRECTORY,
name: 'dirname',
contents: [
{
type: fsify.FILE,
name: 'filename',
contents: 'data'
}
]
},
{
type: fsify.FILE,
name: 'filename',
contents: 'data'
}
]
Directory
A directory must have the type of a directory and a name. It can also contain another nested structure in its contents and a mode.
{
type: fsify.DIRECTORY,
name: 'dirname',
mode: 0o777,
contents: []
}
File
A file must have the type of a file and a name. It can also contain contents (data of the file). encoding, mode and flag will be passed directly to fs.writeFile.
{
type: fsify.FILE,
name: 'filename',
contents: 'data',
encoding: 'utf8',
mode: 0o666,
flag: 'w'
}