Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

fsify

electerious1.6kMIT5.0.0

Convert an array of objects into a persistent or temporary directory structure

fs, file, files, folder, folders, tree, structure, object, json, persistent, temporary, directory, dir

readme

fsify

Build Coverage Status

Convert an array of objects into a persistent or temporary directory structure.

Contents

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 to process.cwd().
    • persistent {?Boolean} - Keep directories and files even when the process exists. Defaults to true.
    • force {?Boolean} - Allow deleting the current working directory and outside. Defaults to false.

Returns

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'
}

changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[5.0.0] - 2021-12-11

Changed

  • Only support Node.js 12 or newer

Fixed

  • tree example in README (#38)

[4.0.2] - 2021-02-28

Changed

  • Updated README, LICENSE and dependencies

[4.0.1] - 2020-05-10

Fixed

  • Empty file content throws error

[4.0.0] - 2020-03-20

Changed

  • Updated dependencies
  • Only support Node.js 10+
  • Test with Node.js 10 and 12

[3.0.0] - 2018-08-25

Changed

  • Improved JSDoc annotation
  • Removed prepublish script from package.json
  • Only support Node.js 8+

Fixed

  • Assert parameter order in tests

[2.0.4] - 2017-08-08

Added

  • Added a changelog

Changed

  • Ignore yarn.lock and package-lock.json files