import * as fs from 'fs' import * as fsp from 'fs/promises' import * as path from 'path' export const createOutDir = async (outDir: string) => { const dir = outDir if (fs.existsSync(dir)) await fsp.rm(dir, { force: true, recursive: true }) const _clean = async () => { const exists = fs.existsSync(dir) if (exists) { await fsp.rm(dir, { force: true, recursive: true }) } } const _init = async () => { await _clean() await fsp.mkdir(dir, { recursive: true }) } const _writeFile = async (filename: string, content: string) => { if (!filename.startsWith(dir)) filename = path.join(dir, filename) const dirname = path.dirname(filename) if (!fs.existsSync(dirname)) { await fsp.mkdir(dirname, { recursive: true }) } await fsp.writeFile(filename, Buffer.from(content)) return filename } return { dir, init: _init, clean: _clean, write: _writeFile, } }