https://github.com/markthree/go-get-folder-size
go concurrently get folder size quickly, can run in nodejs | go 并发快速获取文件夹大小,可以跑在 nodejs 中
https://github.com/markthree/go-get-folder-size
folder-size go nodejs ultrafast wasm
Last synced: 7 months ago
JSON representation
go concurrently get folder size quickly, can run in nodejs | go 并发快速获取文件夹大小,可以跑在 nodejs 中
- Host: GitHub
- URL: https://github.com/markthree/go-get-folder-size
- Owner: markthree
- License: mit
- Created: 2023-01-26T10:32:54.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-05-10T01:44:36.000Z (10 months ago)
- Last Synced: 2025-08-09T07:19:51.807Z (7 months ago)
- Topics: folder-size, go, nodejs, ultrafast, wasm
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/go-get-folder-size
- Size: 7.93 MB
- Stars: 97
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## README 🦉
[简体中文](./README_ZH.md) | English
## features
- 🐉 [ipc go](./src/bin.ts)
- 🦕 [binary go](./src/bin.ts)
- 🦖 [native node](./src/node.ts)
- 🐊 [wasm go](./src/wasm.ts)
## motivation
I want to know the folder size quickly, but the nodejs implementation of
[get-folder-size](https://github.com/alessioalex/get-folder-size) is slow, so
using go implements a recursive get folder size that runs in nodejs and is
`7 ~ 20` times faster than the node native solution under normal circumstances。
## Usage
### npm
#### install
```shell
npm install go-get-folder-size
```
#### cli
```shell
# Binary go, fastest
npx go-get-folder-size
```
#### program
```ts
import {
getFolderSize,
getFolderSizeBin,
getFolderSizeWasm,
} from "go-get-folder-size";
const base = "./"; // The directory path you want to get
await getFolderSizeBin(base); // Binary go, fastest
await getFolderSize(base); // native node
await getFolderSizeWasm(base); // Wasm go,slowest
```
##### IPC
Suitable for multi-path
```ts
import { createGetFolderSizeBinIpc } from "go-get-folder-size";
const { getFolderSizeWithIpc, close } = createGetFolderSizeBinIpc();
Promise.all([
getFolderSizeWithIpc("./"),
getFolderSizeWithIpc("../"),
])
.then((vs) => console.log(vs))
.finally(close); // Manual close is required
```
### go
#### cli
```shell
go install github.com/markthree/go-get-folder-size
```
```shell
go-get-folder-size
```
#### program
```shell
# Super invincible fast
go get github.com/markthree/go-get-folder-size
```
```go
package main
import (
getFolderSize "github.com/markthree/go-get-folder-size/src"
)
func main() {
size, err := getFolderSize.Invoke("./") // Concurrent running, invincible fast
size2 := getFolderSize.LooseInvoke("./") // Sometimes we may encounter inaccessible files, and we can set 'loose' to ignore them
}
```
## loose
Sometimes we may encounter inaccessible files, and we can set `loose` to ignore
them
### cli
```shell
go-get-folder-size --loose
```
### program
```ts
import {
getFolderSize,
getFolderSizeBin,
getFolderSizeWasm,
} from "go-get-folder-size";
const base = "./"; // The directory path you want to get
const pretty = false; // Human readable way
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
```
## stack
- [vite](https://github.com/vitejs/vite)
- [goreleaser](https://github.com/goreleaser/goreleaser)
## License
Made with [markthree](https://github.com/markthree)
Published under [MIT License](./LICENSE).