@wrote/read-dir-structure v1.3.1
@wrote/read-dir-structure
@wrote/read-dir-structure is Node.JS package to a read directory structure.
yarn add @wrote/read-dir-structureTable Of Contents
- Table Of Contents
- API
- Types
async readDirStructure(dirPath, opts=): DirectoryStructuregetFiles(content, path): !Array<string>- Reasons for Errors
- Copyright
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
readDirStructureresult. - 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%' |