Как сжать папки и файлы в 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.