fs-extra API 全量文档(基于 v11+)
fs-extra 是 Node.js 文件系统的增强版本,提供了异步与同步方法,覆盖了常规 fs 模块的所有功能,并添加了许多高级实用工具方法。
安装教程
使用 npm 安装:
npm install fs-extra使用 pnpm 安装:
pnpm add fs-extra使用 yarn 安装:
yarn add fs-extra以下是根据官网文档提供的 API 全量整理,包括参数说明和示例代码。
📁 Async 异步 API
1. copy(src, dest, [options])
复制文件或目录
| 参数 | 类型 | 说明 |
|---|---|---|
src | string | 源路径 |
dest | string | 目标路径 |
options | object | 可选,支持 overwrite, errorOnExist 等 |
import fs from 'fs-extra';
await fs.copy('src/file.txt', 'dest/file.txt');2. emptyDir(dir)
清空一个目录,若目录不存在则创建它
| 参数 | 类型 | 说明 |
|---|---|---|
dir | string | 目录路径 |
await fs.emptyDir('/tmp/my-folder');3. ensureFile(file)
确保文件存在,如不存在则创建
| 参数 | 类型 | 说明 |
|---|---|---|
file | string | 文件路径 |
await fs.ensureFile('./logs/debug.log');4. ensureDir(dir) / mkdirp(dir) / mkdirs(dir)
确保目录存在,如不存在则创建
| 参数 | 类型 | 说明 |
|---|---|---|
dir | string | 目录路径 |
await fs.ensureDir('./data/output');5. ensureLink(src, dest)
创建硬链接,若目标已存在则跳过
| 参数 | 类型 | 说明 |
|---|---|---|
src | string | 源文件路径 |
dest | string | 链接路径 |
await fs.ensureLink('file.txt', 'linked-file.txt');6. ensureSymlink(src, dest, [type])
创建符号链接
| 参数 | 类型 | 说明 |
|---|---|---|
src | string | 源路径 |
dest | string | 链接路径 |
type | string | 可选:file、dir,平台相关行为 |
await fs.ensureSymlink('source-dir', 'link-to-dir');7. move(src, dest, [options])
移动文件或目录
| 参数 | 类型 | 说明 |
|---|---|---|
src | string | 源路径 |
dest | string | 目标路径 |
options | object | 可选:overwrite、clobber |
await fs.move('./temp/file.txt', './dest/file.txt');8. outputFile(file, data)
写入文件(自动创建目录)
| 参数 | 类型 | 说明 |
|---|---|---|
file | string | 文件路径 |
data | any | 写入的数据内容 |
await fs.outputFile('./out/logs/debug.log', 'Debug info');9. outputJson(file, obj, [options])
写入 JSON 文件(自动创建目录)
| 参数 | 类型 | 说明 |
|---|---|---|
file | string | 文件路径 |
obj | object | 要写入的 JSON 对象 |
options | object | 可选:缩进、编码等 |
await fs.outputJson('./data/config.json', { debug: true });10. pathExists(path)
判断路径是否存在(等价于 fs.exists)
| 参数 | 类型 | 说明 |
|---|---|---|
path | string | 路径 |
if (await fs.pathExists('./config.json')) {
console.log('配置文件存在');
}11. readJson(file, [options])
读取并解析 JSON 文件
| 参数 | 类型 | 说明 |
|---|---|---|
file | string | 文件路径 |
options | object | 可选,编码等 |
const config = await fs.readJson('./data/config.json');12. remove(path)
删除文件或目录(递归)
| 参数 | 类型 | 说明 |
|---|---|---|
path | string | 路径 |
await fs.remove('./old/output');13. writeJson(file, obj, [options])
写入 JSON 数据(不自动创建目录)
| 参数 | 类型 | 说明 |
|---|---|---|
file | string | 文件路径 |
obj | object | 要写入的 JSON 对象 |
options | object | 可选,缩进、编码等 |
await fs.writeJson('./config.json', { debug: false }, { spaces: 2 });🧩 Sync 同步 API(同名 + Sync 后缀)
这些方法与异步版本完全一致,只是同步执行:
fs.copySync(src, dest);
fs.emptyDirSync(dir);
fs.ensureFileSync(file);
fs.ensureDirSync(dir);
fs.ensureLinkSync(src, dest);
fs.ensureSymlinkSync(src, dest);
fs.mkdirpSync(dir);
fs.mkdirsSync(dir);
fs.moveSync(src, dest);
fs.outputFileSync(file, data);
fs.outputJsonSync(file, obj);
fs.pathExistsSync(path);
fs.readJsonSync(file);
fs.removeSync(path);
fs.writeJsonSync(file, obj);注意:同步方法不推荐在高并发生产环境中使用,建议仅用于脚本或初始化流程中。
文章目录
- 安装教程
- 📁 Async 异步 API
- 1. copy(src, dest, [options])
- 2. emptyDir(dir)
- 3. ensureFile(file)
- 4. ensureDir(dir) / mkdirp(dir) / mkdirs(dir)
- 5. ensureLink(src, dest)
- 6. ensureSymlink(src, dest, [type])
- 7. move(src, dest, [options])
- 8. outputFile(file, data)
- 9. outputJson(file, obj, [options])
- 10. pathExists(path)
- 11. readJson(file, [options])
- 12. remove(path)
- 13. writeJson(file, obj, [options])
- 🧩 Sync 同步 API(同名 + Sync 后缀)
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。