Skip to content

fs-extra

什么是 fs-extra?

  • fs-extra adds file system methods that aren't included in the native fs module and adds promise support to the fs methods. It also uses graceful-fs to prevent EMFILE errors. It should be a drop in replacement for fs.
  • fs-extra 添加了原生 fs 模块中未包含的文件系统方法,并为 fs 方法添加了 Promise 支持。它还使用 Graceful-fs 来防止 EMFILE 错误。是 fs 的替代品
  • 目的是为了解决 mkdirp, rimraf, and ncp 在项目中经常使用的问题

fs-extra 的功能和特点

  • Promise 支持:fs-extra 中的所有方法都返回 Promise 对象,使得文件操作可以更加方便地使用 async/await 或 Promise 的方式进行处理,避免了回调地狱的问题。
  • 额外的方法:除了 Node.js 原生的 fs 模块提供的方法外,fs-extra 还提供了一些额外的方法,如 copy、emptyDir、ensureFile 等,使得文件和目录的操作更加便捷。
  • 错误处理:fs-extra 在处理文件操作时,对错误的处理更加友好和灵活,提供了更多的错误处理选项和方法。
  • 跨平台兼容:fs-extra 在不同的操作系统上都能够正常工作,不会受到平台差异的影响。

示例:简化文件操作

javascript
import fs from "fs-extra";

// Async with promises:
fs.copy("./home/AI", "./tmp/mynewfile")
  .then(() => console.log("success!"))
  .catch((err) => console.error(err));

// 同步拷贝
try {
  fs.copySync("./home/AI", "./tmp/copySync/mynewfile");
  console.log("success!");
} catch (err) {
  console.error(err);
}

其他方法说明

方法名功能描述示例代码
copySync同步复制文件或目录fs.copySync('source.txt', 'destination.txt');
emptyDirSync同步清空目录fs.emptyDirSync('path/to/directory');
ensureFileSync确保文件存在,如果不存在则创建空文件fs.ensureFileSync('path/to/file');
ensureDirSync确保目录存在,如果不存在则创建目录fs.ensureDirSync('path/to/directory');
ensureLinkSync确保符号链接存在,如果不存在则创建符号链接fs.ensureLinkSync('source', 'destination');
ensureSymlinkSync确保符号链接存在,如果不存在则创建符号链接fs.ensureSymlinkSync('source', 'destination');
mkdirpSync同步递归创建目录fs.mkdirpSync('path/to/directory');
mkdirsSync同步递归创建目录fs.mkdirsSync('path/to/directory');
moveSync同步移动文件或目录fs.moveSync('source.txt', 'destination.txt');
outputFileSync同步写入文件的内容fs.outputFileSync('path/to/file', 'File content');
outputJsonSync同步写入 JSON 格式的数据到文件fs.outputJsonSync('path/to/file.json', data);
pathExistsSync同步判断文件或目录是否存在const exists = fs.pathExistsSync('path/to/fileOrDirectory');
readJsonSync同步读取 JSON 格式的文件内容const data = fs.readJsonSync('path/to/file.json');
removeSync同步删除文件或目录fs.removeSync('path/to/file');
fs.removeSync('path/to/directory');
writeJsonSync同步写入 JSON 格式的数据到文件fs.writeJsonSync('path/to/file.json', data);

Released under the MIT License.