Как создать папку в Node.js
Короткий ответ
mkdir() с recursive: true создаёт все недостающие папки на пути и не ругается, если они уже есть:
import { mkdir, stat } from 'node:fs/promises';
await mkdir('storage/cache/images', { recursive: true });
await mkdir('storage/cache/images', { recursive: true });
console.log((await stat('storage/cache/images')).isDirectory());Результат:
trueВременная папка
mkdtemp() создаёт папку с уникальным именем во временном каталоге системы:
import { mkdtemp, rm } from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { join, basename } from 'node:path';
const dir = await mkdtemp(join(tmpdir(), 'upload-'));
console.log(basename(dir).startsWith('upload-'));
await rm(dir, { recursive: true });Результат:
trueУдаление папки
rm() с recursive: true удаляет папку со всем содержимым. Будьте с ним осторожны: корзины нет.
import { mkdir, rm, writeFile } from 'node:fs/promises';
import { existsSync } from 'node:fs';
await mkdir('old-build', { recursive: true });
await writeFile('old-build/app.js', '');
await rm('old-build', { recursive: true, force: true });
console.log(existsSync('old-build'));Результат:
falseЧастая ошибка
Без recursive mkdir() падает, если нет родительской папки или папка уже существует:
import { mkdir } from 'node:fs/promises';
try {
await mkdir('a/b/c');
} catch (error) {
console.log(error.code);
}Результат:
ENOENTФункции из этого ответа
- await — Ждёт результата промиса и возвращает его значение.