NodeJS文件系统遍历工具:fast-glob

简介: NodeJS文件系统遍历工具:fast-glob

常用工具模块NodeJS文件系统遍历工具:fast-glob


1. 简介

fast-glob 提供了遍历文件系统的方法,并根据 Unix Bash shell 使用的规则返回与一组定义的指定模式匹配的路径名,并进行了一些简化,同时以任意顺序返回结果。它支持同步、Promise 和 Stream API。

2. glob 语法

2.1 什么是 glob

glob 是一种由普简便的用于匹配文件路径的方法,可以通过它在文件系统中方便的指定和筛选文件。

2.2 glob 语法规则详解

2.2.1 glob 通配符: *

和很多其它地方一样,glog 使用 * 作为通配符以匹配任意数量的任何字符。举个例子来说:

"src/*.js"    // 匹配 src 目录下的所有后缀名为 js 的文件
"src/**"      // 匹配 src 目录下的所有文件
"src/**/*.ts" // 匹配 src 目录下任意子目录下的后缀名为 ts 的文件

2.2.2 单个字符匹配 ?

?用于匹配该限定符前的字符0或1次,与正则表达式中的?类似,但是一般glob是表示该符号后面的那个字符。

2.2.3 列表匹配 [ABCD]

列表匹配同于匹配[]中列出的所有字母,比如:

"[ABCD]"  // A、B、C、D 的任意一个都会被匹配成功

2.2.4 列表排除 [!ABCD]

列表排除用于匹配除了[]中列出的字符外的所有字符,与正则表达式的列表排除类似,只是正则表达式用的^换成了!

例如:

"[!ABCD]"  // A、B、C、D 之外的字符才能被匹配成功

2.2.5 区间匹配 [a-z][A-Z][0-9]

例如:

"[g-j]"  // 匹配字符 g 、h、i、j
"[C-F]"  // 匹配字符 C、D、E、F
"[3-7]"  // 匹配字符 3、4、5、6、7

2.2.6 区间排除 [!a-z][!A-Z][!0-9]

区间排除用于匹配除了[]中所表示的区间内所有字符以外的任意字符,与正则表达式的列表排除类似,只是正则表达式用的^换成了!

例如:

"[5-7]"  // 匹配除 5、6、7 以外的任意字符

3. fast-glob 的用法

3.1 使用同步 API

3.1.1 同步 API 的接口形式

fg.sync(patterns, [options])

3.1.2 例子

例如你有这样一个目录树:

dir/
└── one/            // 1
    └── two/        // 2
        └── file.js // 3
import fg from 'fast-glob'
// 基本目录
fg.sync('dir/**', { onlyFiles: false, deep: 1 }); // ['dir/one']
fg.sync('dir/**', { onlyFiles: false, deep: 2 }); // ['dir/one', 'dir/one/two']
// 使用 cwd 选项
fg.sync('**', { onlyFiles: false, cwd: 'dir', deep: 1 }); // ['one']
fg.sync('**', { onlyFiles: false, cwd: 'dir', deep: 2 }); // ['one', 'one/two']

其中:

  • deep 选项 表示指定读取目录相对于起始目录的最大深度;
  • cwd 选项(默认为process.cwd())表示要在其中搜索的当前工作目录。

3.2 使用 Promise API

3.2.1 Promise API 的接口形式

fg(patterns, [options])

3.2.2 例子

import glob from 'fast-glob'
async function buildFullLocale(minify: boolean) {
  const files = await glob(`**/*.ts`, {
    cwd: path.resolve(PKG_LOCALE, 'lang'),
    absolute: true,
  })
  return Promise.all(
    files.map(async (file) => {
      const filename = path.basename(file, '.ts')
      const name = upperFirst(camelCase(filename))
      // Do something...
    })
  )
}
目录
相关文章
|
27天前
|
JavaScript Unix API
Node.js 文件系统
10月更文挑战第6天
18 2
|
27天前
|
存储 JavaScript 前端开发
Node.js 常用工具
10月更文挑战第6天
17 2
|
21天前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具
|
2月前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
|
26天前
|
JavaScript 网络协议
Node.js 工具模块
10月更文挑战第7天
19 0
|
2月前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。
|
6月前
|
Web App开发 JavaScript 前端开发
Node.js 文件系统操作指南
Node.js 文件系统操作指南
117 0
|
3月前
|
JavaScript 小程序 Java
【工具】用nvm管理nodejs版本切换,真香!
本文详细介绍了如何使用 nvm(node.js 版本管理工具)解决在不同项目间频繁切换 Node.js 版本的问题。通过实例展示了 A、B 两个项目分别依赖 v14.19.1 和 v16.15.0 版本时的解决方案,并提供了 nvm 的下载、安装及常用命令等实用信息,帮助读者轻松管理 Node.js 版本。文章还包括了卸载已安装的 Node.js、配置环境变量等步骤,确保切换顺畅无阻。
116 0
【工具】用nvm管理nodejs版本切换,真香!
|
3月前
|
JavaScript IDE 前端开发
前端开发工具配置 nodejs & git & IDE
前端开发工具配置 nodejs & git & IDE
|
3月前
|
机器学习/深度学习 JavaScript
node.js实现遍历所有文件夹里面的js文件,提取所有的url
node.js实现遍历所有文件夹里面的js文件,提取所有的url