import { resolve } from 'path' import ejs from 'ejs' import globby from 'globby' import { Obj } from './type' import { readUTF8File, outputFile } from './fs' export async function ejsRender( str: string, obj: Obj, dest?: string, formatter?: (str: string, dest?: string) => string, ): Promise { str = ejs.render(str, obj) if (formatter) { str = formatter(str, dest) } if (dest) { await outputFile(dest, str) } return str } export async function ejsRenderDir( dir: string, obj: Obj, dest: string, formatter?: (str: string, dest?: string) => string, ): Promise { const files = await globby('**/**', { cwd: dir }) await Promise.all( files.map(async (file) => { const cnt = await readUTF8File(resolve(dir, file)) await ejsRender(cnt, obj, resolve(dest, file), formatter) }), ) }