4.2.1 • Published 7 months ago

walk-directories v4.2.1

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

walk-directories

JavaScript and node JS walking directories. Either a single directory or walk recursively through a tree of directories.

Get started

Install the NPM files:

npm i walk-directories

Run the tests:

npm run test-list-dirs

Or clone it if you want:

git clone git@github.com:charliecalvert/walk-directories.git

Typical Usage

walkSimple is the most commonly used method.

import { walkSimple } from 'walk-directories';
import createDebugMessages from 'debug';
const debug = createDebugMessages('routes:index');
const debugCall = createDebugMessages('called');

/**
 * Get file information for all files of type
 * in a directory
 * @param {string} directory
 * @param {string} ext
 * @returns object with file information
 *
 * @example
 * const fileInfos = await getReportOnFilesInDirectories(directory, ext);
 * console.log(fileInfos);
 *
 * Sample output: [{
 *    relativePath: '/TestCss.md',
 *    directory: '/home/ubuntu/Git/CssGuide',
 *    fullPath: '/home/ubuntu/Git/CssGuide/TestCss.md',
 *    fileName: 'TestCss.md'
 * }]
 */
async function getReportOnFilesInDirectories(directory, ext) {
    debugCall('GET FILE INFOS', __filename);
    const fileInfos = await walkSimple(directory, ext)
        .catch((error) => {
            debug('ERROR', error);
            throw new UserException('no infos');
        });

    if (fileInfos.length === 0) {
        throw new elfUtils.UserException('We received nothing');
    }
    debugFile('WALK_SIMPLE FILEINFOS', fileInfos);
    return fileInfos;
}

readLink

You have two choices:

  1. fs.readLink
  2. fs.readLinkSync

with readlink:

fs.readlink(fullPath, (err, linkString) => {
    if (err) {
        console.error(err);
    } else {
        console.log('LINK STRING', linkString);
    }
});

with readlinkSync:

const linkString = fs.readlinkSync(fullPath);
debug('LINK STRING', linkString);

NPM Publish

How to publish an NPM package:

docs: https://www.elvenware.com/teach/assignments/NpmPublishing.html

example:

npm version minor
npm publish

Debugging

To debug, set the DEBUG environment variable:

export DEBUG=walk-directories,list-dirs:file,list-dirs:dirs

Then run the tests:

npm run test-list-dirs

Also, you can use the debug module to debug your code:

async function listFiles(dirPath) {
    const allFiles = [];
    for await (const dirent of await fsp.opendir(dirPath)) {
        const fullPath = path.join(dirPath, dirent.name);
        /* const pwd = __dirname;
        const fullPath = `${pwd}/${dirent.name}` */

        if (dirent.isDirectory()) {
            if (!fullPath.includes('node_modules') && !fullPath.includes('.git')) {
                // debug(dirent.name);
                // count++;
                // allDirs.push(fullPath);
                debug(fullPath);
            }
            // eslint-disable-next-line no-console
            await listDirs(fullPath).catch(console.error);
        } else if (dirent.isFile()) {
            debugFiles(fullPath);
            allFiles.push(fullPath);
        }
    }
    return allDirs;
}
4.2.1

7 months ago

4.1.4

12 months ago

4.1.3

12 months ago

4.1.6

12 months ago

4.1.5

12 months ago

4.1.2

12 months ago

4.2.0

12 months ago

4.1.0

1 year ago

4.1.1

1 year ago

4.0.0

2 years ago

2.0.3

2 years ago

1.0.2

2 years ago

2.0.2

2 years ago

1.0.1

2 years ago

3.0.0

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.0

2 years ago