@sanity/cli
Version:
Sanity CLI tool for managing Sanity installations, managing plugins, schemas and datasets
27 lines (20 loc) • 649 B
text/typescript
import fs from 'node:fs/promises'
import path from 'node:path'
export interface ReaddirItem {
path: string
isDir: boolean
}
export async function readdirRecursive(dir: string): Promise<ReaddirItem[]> {
let content: ReaddirItem[] = []
const currentPath = path.resolve(dir)
const dirContent = (await fs.readdir(currentPath)).map((item) => path.join(currentPath, item))
for (const subPath of dirContent) {
const stat = await fs.stat(subPath)
const isDir = stat.isDirectory()
content.push({path: subPath, isDir})
if (isDir) {
content = content.concat(await readdirRecursive(subPath))
}
}
return content
}