想要快速知道文件夹大小,但 nodejs 实现的
get-folder-size 是慢的,所以用
go 实现了递归获取文件夹大小,能跑在 nodejs 中,正常情况下,比 node 原生方案快
7 ~ 20
倍
具体可见 issue 👉 get-folder-size/issues/22
npm install go-get-folder-size
# Binary go, fastest
npx go-get-folder-size
import {
getFolderSize,
getFolderSizeBin,
getFolderSizeWasm,
} from "go-get-folder-size";
const base = "./"; // 你想要获取的目录
await getFolderSizeBin(base); // 二进制 go,最快
await getFolderSize(base); // 原生 node
await getFolderSizeWasm(base); // Wasm go,最慢 🥵
go install github.com/markthree/go-get-folder-size
go-get-folder-size
go get github.com/markthree/go-get-folder-size
package main
import (
getFolderSize "github.com/markthree/go-get-folder-size/src"
)
func main() {
size, err := getFolderSize.Invoke("./") // 并发计算,超级快
size2 := getFolderSize.LooseInvoke("./") // 有时我们可能会遇到不可访问的文件,我们可以使用 loose 来忽略它们
}
适用于多路径
import { createGetFolderSizeBinIpc } from "go-get-folder-size";
const { getFolderSizeWithIpc, close } = createGetFolderSizeBinIpc();
Promise.all([
getFolderSizeWithIpc("./"),
getFolderSizeWithIpc("../"),
])
.then((vs) => console.log(vs))
.finally(close); // 手动退出是必需的
有时我们可能会遇到不可访问的文件,我们可以使用 loose
来忽略它们
go-get-folder-size --loose
import {
getFolderSize,
getFolderSizeBin,
getFolderSizeWasm,
} from "go-get-folder-size";
const base = "./"; // 你想要获取的目录
const pretty = false; // 人类可读的方式
const loose = true;
await getFolderSizeBin(base, pretty, { loose }); // Binary go, fastest
await getFolderSize(base, pretty, { loose }); // native node
await getFolderSizeWasm(base, pretty, { loose }); // Wasm go,slowest
- 目前该包被使用在组织内的本地项目管理器中,首次获取项目大小优化到
1s
内 👉 x-pm
Made with markthree
Published under MIT License.