Как сжать папки и файлы в ZIP с помощью Node.js

Ранее я написал статью о распаковке zip-файлов с помощью Node.js, и, похоже, многим из вас она понравилась! Пришло время объяснить, как сделать наоборот!
Node.js (и, в частности, FS) не поддерживает функции архивирования/распаковки файлов.
Это означает, что мы должны пойти с библиотеками. Их множество в сети, но одна из них привлекла мое внимание из-за простоты использования: JSZip.
JSZip работает с системой экземпляров. Создавая экземпляр нового объекта, создается новый ZIP-файл. Итак, мы начнем с этого:

Теперь, когда это будет сделано, мы начнем добавлять контент в наш Zip-файл.
JSZip принимает строку в качестве входных данных, что упрощает работу с ней. Затем вы можете использовать FS для разбора файла и помещения его содержимого в ZIP-архив.
Для этого мы собираемся вызвать метод instance.file, который принимает два аргумента:
- имя файла (Обязательно)
- Содержимое (Необязательно, если не указано, будет просто создан пустой файл)
Вы можете вызывать instance.file несколько раз, каждый вызов будет стирать существующее содержимое в целевом файле.

Последний шаг — сгенерировать наш zip-файл и сохранить его.
JSZip имеет метод с именем instance.generateAsync, и он принимает один аргумент, соответствующий типу кодировки, который вы хотите использовать.
Хотя это может занять много разных кодировок. Мы поговорим о двух, в частности:
- blob: идеально, если вы работаете с браузером. Blob позволит вам легко загрузить ZIP-файл на сервер или загрузить его локально.
- uint8array: больше подходит для работы с Node.js. Мы используем uint8array для создания формата, принимаемого fs, если вы хотите записать свой zip в свою файловую систему.

Вот так! Если вы используете свой любимый инструмент для распаковки (или фрагмент кода, описанный в другой моей статье, ссылка на которую приведена выше!), вы сможете разархивировать только что созданный zip-файл и найти myfile.txt файл с содержимым Hello world!
Создание папок
Существует два способа создания папок.
Первый в основном вызывает instance.folder("foldername") и собирается создать новую папку в вашем почтовом индексе.
Второй способ — добавить путь при создании файла: instance.file("folder/file.txt", "content")
Папка будет создана автоматически, если она не существует, не о чем беспокоиться!
Удалить файлы и папки
Чтобы закончить эту статью, давайте кратко поговорим об удалении файлов или папок.
Для этого существует общий метод instance.remove("myfileorfolder")
Так же, как и при создании папки, вы можете использовать полный путь для удаления файла. Вы также можете удалить непустую папку, не очищая ее предварительно.
Вот и все! Теперь вы точно знаете, как создать ZIP-файл с помощью Node.JS!
Надеюсь, эта статья была вам полезна! Не стесняйтесь хлопать или следовать, если это было! :)
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord.