dir-tree is a simple directory tree scanner for node, which supports directory level update, filters, display tree structure and so on.
Assumed you have the node env.
npm i dir-tree-scanner
You can use find function as a try.
var dirTree = require('dir-tree-scanner');
var path = './test';
dirTree.find(path)
.then(function(result){
console.log(result);
}, function(err){
console.log('err:', err);
}, function(data){
console.log('progress: ', data);
});
To make result more intuitive, you can use the display function.
var dirTree = require('dir-tree-scanner');
var path = './test';
dirTree.find(path)
.then(function(result){
dirTree.display(result.data);
}, function(err){
console.log('err:', err);
}, function(data){
console.log('progress: ', data);
});
You can use filters as well.
var dirTree = require('dir-tree-scanner');
var path = './test';
dirTree.find(path, {
file: ['.js', '.md']
// the same as regular expression
// file: /(\.js|\.md)$/
})
.then(function(result){
dirTree.display(result.data);
}, function(err){
console.log('err:', err);
}, function(data){
console.log('progress: ', data);
});
#Example
Below is an example using dir-tree-scanner to do mocha test. The functionality of the code is the same as mocha cli to some extent. Remember to install all the dependencies to run the example.
var dirTree = require('dir-tree-scanner');
var path = require('path');
var Q = require('q');
var exec = require('child_process').exec;
require('colors');
dir_tree.find('./test', {
file: /(\.t\.js)$/
}).then(function(srcTree){
var testSrc = srcTree.data[0].children;
loopTest(testSrc);
});
function loopTest(testSrc){
if(testSrc.length > 0){
doTest(testSrc.shift().name)
.then(function(){
loopTest(testSrc);
}, function(err){
console.log(err.red);
})
}
}
function doTest(testFile) {
return Q.Promise(function (resolve, reject) {
var mochaTest = exec('mocha ' + testFile);
var banner = '----------------------';
console.log((banner + path.basename(testFile) + ' start ' + banner).green);
mochaTest.stdout.on('data', function (data) {
console.log(data);
});
mochaTest.stderr.on('data', function (err) {
console.log(err.red);
});
mochaTest.on('close', function (code) {
console.log((banner + path.basename(testFile) + ' end ' + banner).green);
console.log('child process exited with code ' + code);
resolve();
});
mochaTest.on('error', function (err) {
console.log(err);
reject();
});
});
}