专注于深度扫描指定磁盘位置。
- 复用整个穷举,程序执行完成只发生一次穷举
- 内嵌仅搜索
- 编程式匹配方式,甚至可以请求远程接口,或者有需要的话可以自己实现功能最匹配需求但代码量最少的模块,类似 “fast-glob”
from
{ String } 指定磁盘位置,必填worker
处理器,如果扫描的同时需要更新、过滤操作可提供,一定程度复用穷举,可选,{ Function }- 返回 { Object | Boolean | Promise }
false
过滤掉当前扫描结果true
保留当前扫描结果- 对象字面量,保留 / 更新当前扫描结果
- 如果需要在处理器中需要安放些异步操作,如远程数据请求,可在处理器中返回一个 Promise,该 Promise 可返回,
false
过滤掉当前扫描结果true
保留当前扫描结果- 对象字面量,保留 / 更新当前扫描结果
- 其它类型则默认为没有任何处理
- 其它类型则默认为没有任何处理
- 返回 { Object | Boolean | Promise }
- 返回: {Promise} 扫描到的文件夹、文件
files
文件扫描结果dirs
文件夹扫描结果
import { log, time, timeEnd } from 'console';
import { fsDeepWalk } from @iyowei/fs-deep-walk;
(async () => {
time('fsDeepWalk');
const asyncrslt = await fsDeepWalk({
from: process.cwd(),
worker: (cur) => {
const excludes = ['.git', 'node_modules'];
if (cur.dirent.isDirectory() && excludes.includes(cur.dirent.name)) {
return false;
}
return true;
},
});
timeEnd('fsDeepWalk');
log(asyncrslt);
})();
from
{ String } 指定磁盘位置,必填worker
处理器,如果扫描的同时需要更新、过滤操作可提供,一定程度复用穷举,可选,{ Function }- 返回 { Object | Boolean | Promise }
false
过滤掉当前扫描结果true
保留当前扫描结果- 对象字面量,保留 / 更新当前扫描结果
- 如果需要在处理器中需要安放些异步操作,如远程数据请求,可在处理器中返回一个 Promise,该 Promise 可返回,
false
过滤掉当前扫描结果true
保留当前扫描结果- 对象字面量,保留 / 更新当前扫描结果
- 其它类型则默认为没有任何处理
- 其它类型则默认为没有任何处理
- 返回 { Object | Boolean | Promise }
- 返回: {Promise} 扫描到的文件夹、文件
files
文件扫描结果dirs
文件夹扫描结果
import { log, time, timeEnd } from 'console';
import { fsDeepWalkSync } from @iyowei/fs-deep-walk;
time('fsDeepWalkSync');
const syncrslt = fsDeepWalkSync({
from: process.cwd(),
worker: (cur) => {
const excludeDirs = ['.git', 'node_modules'];
if (cur.dirent.isDirectory() && excludeDirs.includes(cur.dirent.name)) {
return false;
}
return true;
},
});
timeEnd('fsDeepWalkSync');
log(syncrslt);
npm add @iyowei/fs-deep-walk
pnpm add @iyowei/fs-deep-walk
yarn add @iyowei/fs-deep-walk
"@iyowei/fs-deep-walk" 面对的场景与 "fast-glob" 一类非常相似。后者非常棒,只是各自适应不同的场景,对比 "@iyowei/fs-deep-walk" 的设定就会产生如下差异,
- 无法复用穷举
- 内嵌 “搜索 + 匹配”,复杂的实现势必增加体积、性能损耗
- 配置式,(glob)匹配规则等
总的来说,"fast-glob" 一类与 "@iyowei/fs-deep-walk" 的区别类似 Grunt 与 Gulp 的区别。
"@iyowei/fs-deep-walk" 使用 @iyowei/create-esm 脚手架生成。