@aminzer/dir-diff
v5.1.3
Published
Utility for recursive directory iteration and comparison
Downloads
318
Maintainers
Readme
Overview
NodeJS utility for recursive directory comparison.
Installation
npm i @aminzer/dir-diffUsage examples
import { compareDirectories } from '@aminzer/dir-diff';
await compareDirectories('d:/work', 'e:/backups/work', {
onSourceOnlyEntry: (fsEntry) => {
console.log(`${fsEntry.isFile ? 'File' : 'Directory'} ${fsEntry.relativePath} exists in the source directory only`);
},
onTargetOnlyEntry: (fsEntry) => {
console.log(`${fsEntry.isFile ? 'File' : 'Directory'} ${fsEntry.relativePath} exists in the target directory only`);
},
onDifferentEntries: (sourceFsEntry, targetFsEntry) => {
console.log(`File ${sourceFsEntry.relativePath} exists in both source and target directories, but with different content`);
},
});API
compareDirectories
Overview
compareDirectories is used for recursive comparison of 2 directories.
compareDirectories(sourceDirPath, targetDirPath, opts)Parameters
sourceDirPath(string, required) - path to the source directory.targetDirPath(string, required) - path to the target directory.opts(object, optional) - additional options to pass:onSourceOnlyEntry(function,undefinedby default) - function that is called for files and directories that are present in source directory, but are missing in target directory. CorrespondingFsEntryinstance is passed as parameter.onTargetOnlyEntry(function,undefinedby default) - function that is called for files and directories that are missing in source directory, but are present in target directory. CorrespondingFsEntryinstance is passed as parameter.onDifferentEntries(function,undefinedby default) - function that is called for files that are present in both source and target directories but have different content. CorrespondingFsEntryinstances are passed as parameters.onEachEntry(function,undefinedby default) - function that is called for all files and directories from both source and target directories. CorrespondingFsEntryinstance is passed as parameter.skipContentComparison(boolean,falseby default) - files are compared by size only. Content comparison is skipped. It speeds up execution by avoiding "expensive" content-comparison process for large files.skipExcessNestedIterations(boolean,falseby default) - children of source-only and target-only directories are not considered. It speeds up execution by avoiding recursive calls for such directories.
Return value
Promise that becomes fulfilled when directory comparison is completed.
FsEntry
Overview
FsEntry - class representing File System Entry (file or directory).
import { FsEntry } from '@aminzer/dir-diff';Instance properties:
name(string) - name of entry.absolutePath(string) - absolute path to entry.relativePath(string) - relative path to entry. It's relative to source directory forsourceentries and relative to target directory fortargetentries.size(number) - size of file in bytes,0for directories.isFile(boolean) -trueif entry is file.isDirectory(boolean) -trueif entry is directory.
