自己写的一个nodejs查找文件模块-node-find-all-files

最近在折腾着用node-webkit搭建一个工具,其中要查找路径下的所有文件然后再进行压缩等操作,于是进写了这样的一个模块。代码如下:

/*
输入目录找出目录下的所有文件,包括文件夹
*/

/*
依赖模块 nodejs模块 fs  path
 */
var fs = require('fs')
    ,path = require('path')
;

var shortcuts = {
        'file': 'File'
        ,'dir': 'Directory'
    }
    ,pty = {}
;
Object.keys(shortcuts).forEach(function(key){
    pty[key] = function(fpath){
        var stat = fs.statSync;
        if (fs.existsSync(fpath)) {
            return stat(fpath)['is' + shortcuts[key]]();
        }
        return false;
    }
});


/*
对目录进行递归
*/
var subDir = function(parent, cb) {
  if (pty.dir(parent)) {//如果是目录
    fs.readdir(parent, function(err, all) {//读取目录
      all && all.forEach(function(f) {//遍历目录先的文件和文件夹
        var sdir = path.join(parent, f);
        cb.call(null, sdir);
      });
    });
  }
};

/*
文件判断并记录
fpath 为文件路径
obj 存储对象
*/
var memoFiles = function(fpath,obj){
    var _dir = path.dirname(fpath);
    if(pty.file(fpath)){
        obj[fpath] = {type:'file',dirname:_dir};// type 类型(文件、文件夹) dirname 上一级的路径
    }else if(pty.dir(fpath)){
        obj[fpath] = {type:'direcotry',dirname:_dir};
        subDir(fpath,function(sdir){
            memoFiles(sdir,obj);
        });
    }
};


/*
fpath 为文件目录
*/
var findFiles = function(fpath){
    var allFiles = {};//文件缓存区
    memoFiles(fpath,allFiles);

    return allFiles;
};

module.exports = findFiles;

本模块依赖的是nodejs自身的模块fs path,不需要安装其他的模块,使用方法就是用nodejs的require即可(require(文件路径)),因本模块没有提交到npm,所以不支持npm安装