@wrote/read-dir-structure

1.3.1 • Public • Published

@wrote/read-dir-structure

npm version

@wrote/read-dir-structure is Node.JS package to a read directory structure.

yarn add @wrote/read-dir-structure

Table Of Contents

API

There is a single default export function, import it with the following statement:

import readDirStructure from '@wrote/read-dir-structure'

The types and externs for Google Closure Compiler via Depack are defined in the _readDirStructure namespace.

Types

The return type of the function is a DirectoryStructure. It is a recursive object, where items have either File, Directory or SymLink types specified in the type field, and if the item is a directory, it has the content property which is another DirectoryStructure.

Object<string, !DirectoryStructure> Content: The recursive content of the directory.

DirectoryStructure: A directory structure representation.

Name Type Description
type string The type of the item.
content !Content The recursive content if the item is a directory.

async readDirStructure(
  dirPath: string,
  opts=: !ReadDirStructureOpts,
): DirectoryStructure

Read a directory, and return its structure as an object. Only Files, Directories and Symlinks are included!

  • dirPath* string: Path to the directory.
  • opts !ReadDirStructureOpts (optional): The options.

Reads the structure of the directory.

/* yarn example/ */
import readDirStructure from '@wrote/read-dir-structure'

(async () => {
  const res = await readDirStructure('example/directory')
  console.log(JSON.stringify(res, null, 2))
})()

Output for the example/directory:

{
  "content": {
    "fileA-ln.txt": {
      "type": "SymbolicLink"
    },
    "fileA.txt": {
      "type": "File"
    },
    "fileB.txt": {
      "type": "File"
    },
    "test.json": {
      "type": "File"
    },
    "subdirectory": {
      "content": {
        "subdirFileA.txt": {
          "type": "File"
        },
        "subdirFileB.txt": {
          "type": "File"
        }
      },
      "type": "Directory"
    }
  },
  "type": "Directory"
}

getFiles(
  content: !Content,
  path: string,
): !Array

After running the readDirStructure, this function can be used to flatten the content output and return the list of all files (not including symlinks).

  • content* !Content: The content from the readDirStructure result.
  • path* string: The original path to the directory.
/* yarn example/ */
import readDirStructure, { getFiles } from '@wrote/read-dir-structure'

(async () => {
  const path = 'example/directory'
  const res = await readDirStructure(path)
  const files = getFiles(res.content, path)
  console.log(JSON.stringify(files, null, 2))
})()
[
  "example/directory/fileA.txt",
  "example/directory/fileB.txt",
  "example/directory/test.json",
  "example/directory/subdirectory/subdirFileA.txt",
  "example/directory/subdirectory/subdirFileB.txt"
]

Reasons for Errors

The following errors can happen and have been context tested against:

Happens when... code Message
not passing any path - Please specify a path to the directory
passing a path to a symbolic link ENOTDIR Path is not a directory
passing a path to a file ENOTDIR Path is not a directory
directory does not exist ENOENT ENOENT: no such file or directory, lstat '%DIRECTORY%'

Copyright

Art Deco © Art Deco for Wrote 2019 Wrote Tech Nation Visa Tech Nation Visa Sucks

Package Sidebar

Install

npm i @wrote/read-dir-structure

Weekly Downloads

74

Version

1.3.1

License

MIT

Unpacked Size

40 kB

Total Files

21

Last publish

Collaborators

  • zvr