前言
在前端开发中,我们时常需要处理来自服务器或本地文件系统的文件或文件夹,有时候我们需要将这些文件或文件夹根据一些规则组织起来,比如按照文件夹名称进行分类。手写这样的逻辑可能会很繁琐和易出错,不过幸好我们有 NPM,这里介绍一个用于根据文件夹名称将文件分组的 npm 包:@wulechuan/group-files-via-folder-names。
功能简介
@wulechuan/group-files-via-folder-names 是一个用于将给定的文件或文件夹根据指定规则进行分类的 npm 包。它可以根据文件夹名称或文件名的特定部分将文件分组,支持嵌套的子目录和递归搜索。
安装
该 npm 包的使用很简单,首先需要在终端上使用 npm 命令进行安装:
npm install @wulechuan/group-files-via-folder-names
然后引入包并调用其中的方法即可。
使用
该 npm 包只提供了一个方法:groupFilesViaFolderNames。下面是一个简单示例:
-- -------------------- ---- ------- ----- ------------------------ - --------------------------------------------------- ----- --------- - - ------------------------- ------------------------- ------------------------- ------------------------- ------------------------- ---------------------------------- ---------------------------------- ---------------------------------- ---------------------------------- -- ----- ------ - ----------------------------------- --------------- -- ------------ --------------------
该示例代码首先创建一个文件名数组,然后调用 groupFilesViaFolderNames 方法进行分组,函数的第一个参数是文件名数组,第二个参数是组名的规则。输出的结果将会是一个 JavaScript对象,键为组名,值为文件名数组。
上述代码输出的结果如下:
-- -------------------- ---- ------- - ------- - ------------------------ ----------------------- -- ------- - ----------------------- -- -------- - ------------------------ ----------------------- -- ---------- - --------------------------------- -------------------------------- -- ---------- - --------------------------------- -------------------------------- - -
更多选项
除了第二个参数,该方法还支持传入一个 options 对象,可以更细致地控制规则。下面介绍一些比较常用的选项。(若想查看所有选项,请前往官方文档)
- usingBaseName
使用 usingBaseName 选项将分组依据从文件夹名称变为文件名,示例代码如下:
const groups = groupFilesViaFolderNames(fileNames, { groupNameFrom: 'usingBaseName', numberOfTopFoldersToSkip: 3, });
- usingRegExp
使用 usingRegExp 选项可以为文件名或文件夹名称指定正则表达式,筛选需要分组的文件或文件夹。代码示例如下:
const groups = groupFilesViaFolderNames(fileNames, { groupNameFrom: 'secondLevel', usingRegExp: /.*\.(js|ts)$/, shouldTestWholePathWhenMatching: true, });
总结
该 npm 包提供的功能虽然不是很复杂,不过在实际开发中还是会有一定的用处,如果大家有类似的需求可以考虑使用。如果想了解更多细节或更多选项,请前往官方文档了解。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600559e981e8991b448d7910