.. | |||
node_modules | 4 years ago | ||
tests | 4 years ago | ||
.npmignore | 4 years ago | ||
LICENSE | 4 years ago | ||
README.md | 4 years ago | ||
common.js | 4 years ago | ||
compareAsync.js | 4 years ago | ||
compareSync.js | 4 years ago | ||
defaultCompareFileCallback.js | 4 years ago | ||
defaultResultBuilderCallback.js | 4 years ago | ||
dircompare.js | 4 years ago | ||
fileDescriptorQueue.js | 4 years ago | ||
filecompare.js | 4 years ago | ||
fsPromise | 4 years ago | ||
index.js | 4 years ago | ||
package.json | 4 years ago | ||
print.js | 4 years ago |
Node JS directory compare
$ npm install dir-compare
or
$ npm install dir-compare -g
for command line utility.
Synchronous mode:
var dircompare = require('dir-compare'); var options = {compareSize: true}; var path1 = '...'; var path2 = '...'; var res = dircompare.compareSync(path1, path2, options); console.log('equal: ' + res.equal); console.log('distinct: ' + res.distinct); console.log('left: ' + res.left); console.log('right: ' + res.right); console.log('differences: ' + res.differences); console.log('same: ' + res.same); var format = require('util').format; res.diffSet.forEach(function (entry) { var state = { 'equal' : '==', 'left' : '->', 'right' : '<-', 'distinct' : '<>' }[entry.state]; var name1 = entry.name1 ? entry.name1 : ''; var name2 = entry.name2 ? entry.name2 : ''; console.log(format('%s(%s)%s%s(%s)', name1, entry.type1, state, name2, entry.type2)); });
Asynchronous:
var dircompare = require('dir-compare'); var options = {compareSize: true}; var path1 = '...'; var path2 = '...'; dircompare.compare(path1, path2, options).then(function(res){ console.log('equal: ' + res.equal); console.log('distinct: ' + res.distinct); console.log('left: ' + res.left); console.log('right: ' + res.right); console.log('differences: ' + res.differences); console.log('same: ' + res.same); var format = require('util').format; res.diffSet.forEach(function (entry) { var state = { 'equal' : '==', 'left' : '->', 'right' : '<-', 'distinct' : '<>' }[entry.state]; var name1 = entry.name1 ? entry.name1 : ''; var name2 = entry.name2 ? entry.name2 : ''; console.log(format('%s(%s)%s%s(%s)', name1, entry.type1, state, name2, entry.type2)); }); }).catch(function(error){ console.error(error); })
Options:
Result:
Usage: dircompare [options] leftdir rightdir Options: -h, --help output usage information -V, --version output the version number -c, --compare-content compare files by content -D, --compare-date compare files by date --date-tolerance [type] tolerance to be used in date comparison (milliseconds) -f, --filter [type] file name filter -x, --exclude [type] file/directory name exclude filter -S, --skip-subdirs do not recurse into subdirectories -L, --skip-symlinks ignore symlinks -i, --ignore-case ignores case when comparing file names -l, --show-left report - show entries occurring in leftdir -r, --show-right report - show entries occurring in rightdir -e, --show-equal report - show identic entries occuring in both dirs -d, --show-distinct report - show distinct entries occuring in both dirs -a, --show-all report - show all entries -w, --whole-report report - include directories in detailed report --csv report - print details as csv --nocolors don't use console colors --async Make use of multiple cores By default files are compared by size. --date-tolerance defaults to 1000 ms. Two files are considered to have the same date if the difference between their modification dates fits within date tolerance. Exit codes: 0 - entries are identical 1 - entries are different 2 - error occurred Examples: compare by content dircompare -c dir1 dir2 exclude filter dircompare -x .git dir1 dir2 include filter dircompare -f *.js,*.yml dir1 dir2 show only different files dircompare -d dir1 dir2