#
Работа с файламиМетоды src()
и dest()
предоставляются gulp для взаимодействия с файлами на вашем компьютере.
src()
получает glob для чтения из файловой системы и создает Node stream. Он находит все совпадающие файлы и считывает их в память для прохождения через поток.
Поток, созданный src()
, должен быть возвращен из задачи, чтобы сигнализировать об асинхронном завершении, как упомянуто в Создание задач.
Основным API потока является метод .pipe()
для объединения потоков Transform или Writable.
dest()
получает строку каталога вывода, а также создает Node stream, который обычно используется как поток-ограничитель. Когда он получает файл, прошедший через конвейер, он записывает содержимое и другие детали в файловую систему в заданном каталоге. Метод symlink()
также доступен и работает как dest()
, но создает ссылки вместо файлов (подробности смотрите в symlink()
).
Чаще всего плагины помещаются между src()
и dest()
с использованием метода .pipe()
и преобразуют файлы в потоке.
#
Добавление файлов в потокsrc()
также можно разместить в середине конвейера для добавления файлов в поток на основе заданных globs. Дополнительные файлы будут доступны только для преобразований позже в потоке. Если globs overlap, файлы будут добавлены снова.
Это может быть полезно для транспиляции некоторых файлов перед добавлением простых файлов JavaScript в конвейер и отменой всего.
#
Выход в фазахdest()
может использоваться в середине конвейера для записи промежуточных состояний в файловую систему. Когда файл получен, текущее состояние записывается в файловую систему, путь обновляется для представления нового местоположения выходного файла, а затем этот файл продолжается по конвейеру.
Эта функция может быть полезна для создания неминифицированных и минифицированных файлов с помощью одного и того же конвейера.
#
Режимы: потоковый, буферизованный и пустойsrc()
может работать в трех режимах: буферизации, потоковой передачи и пустоты. Они настраиваются с помощью опций buffer
и read
в src()
.
- Режим буферизации установлен по умолчанию и загружает содержимое файла в память. Плагины обычно работают в режиме буферизации, и многие из них не поддерживают режим потоковой передачи.
- Режим потоковой передачи существует в основном для работы с большими файлами, которые не помещаются в памяти, такими как гигантские изображения или фильмы. Содержимое передается из файловой системы небольшими порциями, а не загружается сразу. Если вам нужно использовать потоковый режим, поищите плагин, который его поддерживает, или напишите свой собственный.
- Пустой режим не содержит содержимого и полезен при работе только с метаданными файла.