2015-02-27 4 views
4

У меня есть структура каталогов, где определенная папка Data имеет подкаталоги. В какой-то момент я хочу, чтобы те удалили все сразу, и я установил в противном случае удивительный rimraf пакет для Node.jsУдалите все подкаталоги с rimraf на node.js

Мой код до сих пор:

var dataPath === Path.normalize(__dirname + '/backend/data/'); 

rimraf(dataPath, function(error) { 
    console.log('Error: ', error); 
}); 

Я пробовал как с /бэкэндом/данные/ и /бэкенд/данные/ *, но ни один, кажется, делает трюк - первый удаляет всю данные папки и вторые Запускает ошибки «не удается удалить нуль»

Я думаю, что я мог бы сканировать основной каталог, найти все подпапки и удалить их один за другим, но если это можно сделать с помощью rimraf или аналогичного пакета, я бы предпочел пойти с ним.

+0

Недавно я работал с rimraf и имел успех с вашим вторым вариантом, используя glob. Возможно, последняя версия rimraf теперь лучше справляется с дикой картой? Определенно стоит пересмотреть это, поскольку я использую почти идентичный код для вас, и он оставляет папку данных неповрежденной. – Jeremy

ответ

4

Самое простое решение - просто повторно создать каталог data после того, как rimraf завершает его удаление. В зависимости от вашего варианта использования, который может ввести условие гонки, но я сомневаюсь, что сам rimraf является безопасным для гонок в любых ситуациях, где это не так.

Другой вариант - прочитать содержимое каталога и rimraf каждого из них, но это больше работает и не позволяет избежать каких-либо условий гонки, которые повлияют на первый вариант.

+0

В конце концов я закончил это решение: я создаю временный каталог 'data-temp' и заполняю его всеми необходимыми данными, и после успеха удалите каталог' data' и переименуйте 'data-temp' обратно в' data'. Решение Kinda lame, но оно работает и быстро, и пока не появится более подходящий пакет, я сохраню его. –

Смежные вопросы