Skip to content

Latest commit

 

History

History
executable file
·
47 lines (31 loc) · 4.85 KB

tasks.md

File metadata and controls

executable file
·
47 lines (31 loc) · 4.85 KB

English description | Описание на русском

Таски в TARS

Каждый таск представляет из себя commonJS-модуль. Все таски включаются в gulpfile в корне проекта автоматически.

По умолчанию в gulpfile.js находятся только ссылки на основные таски, например, build ссылается на main:build. Таким образом вы сможете переопределить абсолютно любой таск, совсем не влезая в структуру сборщика.

Свои таски можно создавать в директории user-tasks. По умолчанию там уже находится пример таска. Вообще, в TARS можно подключить любой gulp-task.

По умолчанию каждому таску требуется набор модулей для корректной работы:

const gulp = tars.packages.gulp;
const gutil = tars.packages.gutil;
const notifier = tars.helpers.notifier;

Также, если требуется использовать livereload для данного таска, подключаем модуль browserSync:

const browserSync = tars.packages.browserSync;

Если требуются какие-либо еще зависимости, подключаем их тут же. При этом, зависимости, которых нет в основном package.json, можно занести в user-package.json, который находится в корне проекта. Формат такой же, как и у основного package.json

Не помещайте свои собственные зависимости в package.json. Помещайте их user-package.json Исключением здесь может быть использование TARS-CLI. При инициализации проекта с помощью TARS-CLI и стандартного архива с TARS (из текущего репозитория) user-package.json не создается в папке с проектом. Вместо него будет обычный package.json TARS-CLI позволяет инициализировать TARS с помощью любого zip-архива с TARS. Если вам необходимо, чтобы в package.json уже были какие-либо пакеты, то в вашем форке TARS занесите все пользовательские зависимости в user-package.json и они автоматом окажутся в package.json нового проекта при инициализации с помощью TARS-CLI. Данная функциональность доступна для TARS-CLI начиная с версии 1.1.8.

После подключения зависимостей идет тело модуля, который будет экспортировать таск. Каждый таск описывается внутри экспортируемой функции. Во всех тасках и вотчерах досутпен глобальный объект tars, в котором находятся все данные, конфиги и т.д. текущего проекта. Экспортируемая функция возвращает полноценный gulp-таск. Далее делаем все как и с обычным таском для gulp.

Если требуется нотификация, то таск должен оканчиваться следующим образом:

// If you need to reload browser, uncomment the row below
// .pipe(browserSync.reload({stream:true}))
.pipe(
    notifier('Example task is finished \n')
);

В notifier передается строка, которая будет показываться в уведомлениях.

Также можно вызвать callback, или вернуть основной поток, если требуется выполнять таски в определенном порядке. Более подробно здесь.

Может показаться, что в некоторых местах есть излишний код, есть обращения к файлам, а не потокам. Такие места есть, но это сделано в угоду модульности и легкой расширяемости. На самом деле, на скорость работы сборщика именно эти места не влияют.