Почему команда "del" не удаляет архив?

Как исправить проблему, связанную с тем, что предыдущий архив не удаляется, когда функция создания архива вызывается повторно? В коде сборки есть следующий фрагмент:

```javascript
import { deleteAsync } from 'del';
import zipListener from 'gulp-zip';

const zipFiles = (done) => {
  deleteAsync([`${buildFolder}/*.zip`]);
  return src(`${buildFolder}/**/*.*`, {})
    .pipe(zipListener(`${rootFolder}.zip`))
    .pipe(dest(buildFolder));
};
```

Как можно исправить эту проблему?
  • 22 ноября 2023 г. 18:49
Ответы на вопрос 2
Команда "del" не удаляет архив, потому что функция `deleteAsync` является асинхронной и не возвращает Promise, который можно использовать для ожидания выполнения операции удаления. 

Для исправления этой проблемы, вы можете использовать промисифицированную версию функции `deleteAsync`, которая вернет Promise. Затем вы можете использовать `await` или методы `then()` и `catch()` для ожидания выполнения удаления перед созданием нового архива.

Вот исправленный код:

```javascript
import { delete as deleteSync } from 'del';
import zipListener from 'gulp-zip';

const zipFiles = async (done) => {
  await deleteSync([`${buildFolder}/*.zip`]);
  return src(`${buildFolder}/**/*.*`, {})
    .pipe(zipListener(`${rootFolder}.zip`))
    .pipe(dest(buildFolder));
};
```

Обратите внимание, что функция `deleteAsync` была заменена на `deleteSync`, чтобы использовать синхронную версию функции удаления. Ключевое слово `async` было добавлено перед объявлением функции `zipFiles`, чтобы можно было использовать `await` внутри функции.
Используйте функцию deleteSync для удаления элемента синхронно.
Похожие вопросы