1import fs from 'fs'; 2 3/** 4 * A non-failing version of async FS stat. 5 * 6 * @param file 7 */ 8async function statAsync(file: string): Promise<fs.Stats | null> { 9 try { 10 return await fs.promises.stat(file); 11 } catch { 12 return null; 13 } 14} 15 16export async function fileExistsAsync(file: string): Promise<boolean> { 17 return (await statAsync(file))?.isFile() ?? false; 18} 19 20export async function directoryExistsAsync(file: string): Promise<boolean> { 21 return (await statAsync(file))?.isDirectory() ?? false; 22} 23 24export function fileExists(file: string): boolean { 25 try { 26 return fs.statSync(file).isFile(); 27 } catch { 28 return false; 29 } 30} 31