2.4.0 • Published 7 months ago

directoree v2.4.0

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

Tree directory

Installation:

npm install directoree

unixreaddir

This function (the only one exported) in the package is meant to replace common general usecases for node's native fs/promises readdir module.

The name

The name might suggest that this somehow only works in unix or something but it's for a different reason. This package was born out of my discontent with win32 path conventions. In win32 paths use \ or \\ instead of /. This package aims to read your input (whether it's a win32 path or unix path) and output unix style paths.

Recursive option

Setting { recursive : true } when calling unixreaddir will generate a tree structure of the directory you are trying to access.

Usage:

For these examples the directory structure looks like this:

$ tree parent
parent/
├── sibling0
│   ├── a
│   │   └── b
│   │       └── c
│   │           └── d.txt
│   ├── file1.txt
│   └── subdir
│       ├── file1.txt
│       └── file2.txt
├── sibling1
│   ├── file1.txt
│   └── file2.txt
└── sibling2

Example 1. Basic readdir no options

import { unixreaddir } from "directoree";

unixreaddir("parent").then((result) => {
  console.dir(result, { depth: null });
});
/*
[ 'sibling0', 'sibling1', 'sibling2' ]
*/

Example 2. { withFileTypes : true }

import { unixreaddir } from "directoree";

unixreaddir("parent", { withFileTypes: true }).then((result) => {
  console.dir(result, { depth: null });
});
/*
[
  Dirent { name: 'sibling0', path: 'parent', [Symbol(type)]: 2 },
  Dirent { name: 'sibling1', path: 'parent', [Symbol(type)]: 2 },
  Dirent { name: 'sibling2', path: 'parent', [Symbol(type)]: 2 }
]
*/

Check Dirent for more details.

Example 3. { recursive : true }

import { unixreaddir } from "directoree";

unixreaddir("parent", { recursive: true }).then((tree) => {
  console.dir(tree, { depth: null });
});

/*
TreeNode {
  name: 'parent',
  path: '.',
  isFile: false,
  children: [
    TreeNode {
      name: 'sibling0',
      path: 'parent',
      isFile: false,
      children: [
        TreeNode {
          name: 'a',
          path: 'parent/sibling0',
          isFile: false,
          children: [
            TreeNode {
              name: 'b',
              path: 'parent/sibling0/a',
              isFile: false,
              children: [
                TreeNode {
                  name: 'c',
                  path: 'parent/sibling0/a/b',
                  isFile: false,
                  children: [
                    TreeNode {
                      name: 'd.txt',
                      path: 'parent/sibling0/a/b/c',
                      isFile: true,
                      children: undefined
                    }
                  ]
                }
              ]
            }
          ]
        },
        TreeNode {
          name: 'file1.txt',
          path: 'parent/sibling0',
          isFile: true,
          children: undefined
        },
        TreeNode {
          name: 'subdir',
          path: 'parent/sibling0',
          isFile: false,
          children: [
            TreeNode {
              name: 'file1.txt',
              path: 'parent/sibling0/subdir',
              isFile: true,
              children: undefined
            },
            TreeNode {
              name: 'file2.txt',
              path: 'parent/sibling0/subdir',
              isFile: true,
              children: undefined
            }
          ]
        }
      ]
    },
    TreeNode {
      name: 'sibling1',
      path: 'parent',
      isFile: false,
      children: [
        TreeNode {
          name: 'file1.txt',
          path: 'parent/sibling1',
          isFile: true,
          children: undefined
        },
        TreeNode {
          name: 'file2.txt',
          path: 'parent/sibling1',
          isFile: true,
          children: undefined
        }
      ]
    },
    TreeNode {
      name: 'sibling2',
      path: 'parent',
      isFile: false,
      children: []
    }
  ]
}
*/

Documentation:

You can check the docs for more details.

2.4.0

7 months ago

2.3.0

7 months ago

2.2.0

7 months ago

2.1.0

7 months ago

2.0.0

7 months ago

1.0.0

7 months ago