Концепции#

Следующие концепции необходимы для понимания документации API. На них будут ссылаться повсюду, вернитесь к этой странице для подробных объяснений.

Если вы здесь новичок, начните с Руководства по началу работы.

Vinyl#

Винил - это объект метаданных, описывающий файл. Основными свойствами экземпляра Vinyl являются path и contents - основные аспекты файла в вашей файловой системе. Виниловые объекты можно использовать для описания файлов из многих источников - в локальной файловой системе или в любом удаленном хранилище.

Vinyl адаптеры#

Хотя Vinyl предоставляет способ описания файла, необходим способ доступа к этим файлам. Доступ к каждому источнику файла осуществляется с помощью адаптера Vinyl.

Адаптер предоставляет:

  • Метод с сигнатурой src(globs, [options]) и возвращает поток, который производит объекты Vinyl.
  • Метод с сигнатурой dest(folder, [options]) и возвращает поток, который производит объекты Vinyl.
  • Любые дополнительные методы, специфичные для их среды ввода/вывода, такие как метод symlink, который предоставляет vinyl-fs. Они всегда должны возвращать потоки, которые производят и/или потребляют объекты Vinyl.

Задачи (Таски)#

Каждая задача gulp - это асинхронная функция JavaScript, которая либо принимает обратный вызов при первой ошибке, либо возвращает поток, обещание, эмиттер событий, дочерний процесс или наблюдаемое. Из-за некоторых ограничений платформы синхронные задачи не поддерживаются.

Для более подробного объяснения смотрите Создание задач.

Globs#

Глоб - это строка буквенных символов и/или подстановочных знаков, таких как *, ** или !, используемая для сопоставления путей к файлам. Globbing - это поиск файлов в файловой системе с помощью одного или нескольких глобов.

Если у вас нет опыта работы с глобами, см. Объяснение глобов.

Базовый глоб#

Базовый глоб - иногда называемая родительским элементом глоба - это сегмент пути перед любыми специальными символами в строке глоба. Таким образом, базовый глоб /src/js/**.js - это /src/js/. Все пути, соответствующие глобу, гарантированно имеют общую базу глоба - этот сегмент пути не может быть переменным.

Экземпляры винила, генерируемые src(), создаются с базовым набором glob в качестве их свойства base. При записи в файловую систему с помощью dest(), base будет удален из пути вывода для сохранения структуры каталогов.

Для получения более подробной информации смотрите репозиторий glob-parent.

Статистика файловой системы#

Метаданные файла предоставляются как экземпляр Node fs.Stats. Он доступен как свойство stat в ваших экземплярах Vinyl и используется внутри для определения того, представляет ли объект Vinyl каталог или символическую ссылку. При записи в файловую систему разрешения и значения времени синхронизируются из свойства объекта Vinyl stat.

Режимы файловой системы#

Режимы файловой системы определяют, какие разрешения существуют для файла. Большинство файлов и каталогов в вашей файловой системе будут иметь достаточно разрешительный режим, позволяющий gulp читать / записывать / обновлять файлы от вашего имени. По умолчанию gulp создает файлы с теми же разрешениями, что и запущенный процесс, но вы можете настроить режимы с помощью параметров в src(), dest() и т. д. Если у вас возникли проблемы с разрешениями (EPERM), проверьте режимы в ваших файлах.

Модули#

Gulp состоит из множества небольших модулей, объединенных вместе для слаженной работы. Используя semver в небольших модулях, мы можем выпускать исправления ошибок и функции без публикации новых версий gulp. Часто, когда вы не видите прогресса в основном репозитории, работа выполняется в одном из этих модулей.

Если у вас возникли проблемы, убедитесь, что ваши текущие модули обновлены с помощью команды npm update. Если проблема не исчезнет, откройте вопрос в репозитории отдельного проекта.

  • undertaker - система регистрации заданий
  • vinyl - виртуальные файловые объекты
  • vinyl-fs - виниловый адаптер для вашей локальной файловой системы
  • glob-watcher - наблюдатель за файлами
  • bach - оркестровка задач с использованием series() и parallel()
  • last-run - отслеживает время последнего выполнения задачи
  • vinyl-sourcemap - встроенная поддержка исходной карты
  • gulp-cli - интерфейс командной строки для взаимодействия с gulp