xref: /expo/packages/@expo/cli/src/utils/dir.ts (revision a9c42bb2)
1import fs from 'fs-extra';
2
3export function directoryExistsSync(file: string): boolean {
4  try {
5    return fs.statSync(file)?.isDirectory() ?? false;
6  } catch {
7    return false;
8  }
9}
10
11export async function directoryExistsAsync(file: string): Promise<boolean> {
12  return (await fs.promises.stat(file).catch(() => null))?.isDirectory() ?? false;
13}
14
15export async function fileExistsAsync(file: string): Promise<boolean> {
16  return (await fs.promises.stat(file).catch(() => null))?.isFile() ?? false;
17}
18
19export const ensureDirectoryAsync = (path: string) => fs.promises.mkdir(path, { recursive: true });
20
21export const ensureDirectory = (path: string) => fs.mkdirSync(path, { recursive: true });
22
23export const copySync = fs.copySync;
24
25export const copyAsync = fs.copy;
26
27export const removeAsync = fs.remove;
28