You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
_.find 中存在一个问题,即便 设定了 exclude 某目录,但如果有 include 规则,那么会递归扫描目录下的所有文件。扫描完成后才把所有的文件按照 include、exclude 规则来过滤。
_.find=function(rPath,include,exclude,root){varlist=[],path=_.realpath(rPath),filterPath=root ? path.substring(root.length) : path;if(path){varstat=fs.statSync(path);if(stat.isDirectory()&&(include||_.filter(filterPath,include,exclude))){fs.readdirSync(path).forEach(function(p){if(p[0]!='.'){list=list.concat(_.find(path+'/'+p,include,exclude,root));}});}elseif(stat.isFile()&&_.filter(filterPath,include,exclude)){list.push(path);}}else{fis.log.error('unable to find ['+rPath+']: No such file or directory.');}returnlist.sort();};
_.find 中存在一个问题,即便 设定了 exclude 某目录,但如果有 include 规则,那么会递归扫描目录下的所有文件。扫描完成后才把所有的文件按照 include、exclude 规则来过滤。
在大项目中,如大规模的基于 react/angular 等的方案下,由于 node_modules 的依赖,扫描的内容将很多。特别是在 cnpm 的机制中(npminstall 的加速安装方式),依赖拉平,软链接的形式,在扫描文件的时候会直接陷入死循环状态直至内存溢出崩溃。
建议优化下处理逻辑,扫描到一个目录时,同时判断目录是否 exclude,如果 exclude 了,那么就不递归扫描该目录了。
示例(在大项目中(如 react 系列)使用 npm3)
The text was updated successfully, but these errors were encountered: