Skip to content

fs-extra

fs-extra是在node原生文件读写的基础上做二次封装支持同步和异步

copySync 复制目录

ts
copySync(path.resolve(__dirname, "a"), path.resolve(__dirname, "b"));

removeSync 删除目录

ts
removeSync(path.resolve(__dirname, "a"))

ensureDirSync 创建目录 支持多级

ts
ensureDirSync(path.resolve(__dirname, "c/xx"))

ensureDirSync(path.resolve(__dirname, "c/1.js"))

ensureFileSync 创建文件 支持多级

ts
//多级
ensureFileSync(path.resolve(__dirname, "e/1.txt")) 
//一级
ensureFileSync(path.resolve(__dirname, "e.txt"))

emptyDirSync 清空目录

目录存在,下面的所有子集全部删除

ts
emptyDirSync(path.resolve(__dirname, "c"))

readJSONSync 读取json

ts
const res = readJSONSync(path.resolve(__dirname, "my.json"),{encoding:"utf-8"})

writeJsonSync 写入json

写入json 注意会被覆盖源文件

ts

writeJsonSync(path.resolve(__dirname, "my.json"), {address:"aa街道",school:'hight'},{spaces:2,EOL: '\r\n'})

moveSync 重命名或者移动文件

文件重命名

my.json 重命名 my2.json

ts
moveSync(path.resolve(__dirname, "my.json"), path.resolve(__dirname, "my2.json"));

文件夹重命名

将目录dir 重命名 dir2

ts
moveSync(path.resolve(__dirname, "dir"), path.resolve(__dirname, "dir2"));

移动文件或者文件夹

将文件my.json移动到dir/my.json 注意,当dir不存在的时候,会自动创建

ts
moveSync(path.resolve(__dirname, "my.json"), path.resolve(__dirname, "dir/my.json"));

将文件夹dir-a 移动到 dir/dir-a

ts

moveSync(path.resolve(__dirname, "dir-a"), path.resolve(__dirname, "dir/dir-a"));

pathExistsSync 判断文件/文件夹是否存在

ts
//文件
const res = pathExistsSync(path.resolve(__dirname,'e.txt'))
//文件夹
const res = pathExistsSync(path.resolve(__dirname,'dir-a'))
console.log(res)

源码

初始化

ts

pnpm init 

pnpm i  fs-extra @types/fs-extra -D

pnpm i esno -g

支持esm

ts
{
	"scripts": {
    "dev": "esno ./src/index.ts"
  },
  "dependencies": {
		"fs-extra": "^11.2.0",
		"@types/fs-extra": "^11.0.4"
	},
  "type": "module" //add
}

使用

js


import path from "node:path";
import { fileURLToPath } from "node:url";
import { copySync ,removeSync,ensureDirSync,ensureFileSync,emptyDirSync,readJSONSync, writeJsonSync, moveSync, pathExistsSync} from "fs-extra/esm";


const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);



const res = pathExistsSync(path.resolve(__dirname,'e.txt'))

console.log(res)