@wrote/read-dir-structure
@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.
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.
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