walk-directories
v4.2.1
Published
JavaScript and node JS walking directories
Downloads
17
Readme
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 [email protected]: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:
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;
}