r45her
@r45her
HTML-верстальщик / Frontend разработчик

Как в Gulp сделать отдельную задачу для сборки на продакшн?

Есть gulpfile, в котором прописаны задачи. Есть задача build, которая объединяет мелкие задачи. Есть задача default, которая запускает по очереди build, watch и browsersync.

Вопрос в следующем. Хотелось бы в целях производительности убрать все ненужные для работы операции, такие как: простановка префиксов, сжатие изображений, сжатие CSS и JS файлов и т.д. А так же добавить, например, sourcemaps.

Как мне сделать две задачи: первая для работы, вторая для продакшна?
По сути они очень похожи, но чуть чуть отличаются. Неужели надо дублировать весь код 2 раза? Я чувствую, что есть более грамотный подход.
  • Вопрос задан
  • 1118 просмотров
Решения вопроса 1
zorro76
@zorro76
Дублировать ничего не нужно, вот пример моего gulpfile.js:
// Configuring paths and options for different environments
env = process.env.NODE_ENV || 'dev';

if (env === 'dev') {
    outputDir = 'builds/development/';
    sassStyle = 'expanded';
    sassComments = true;
} else {
    outputDir = 'builds/production/';
    sassStyle = 'compressed';
    sassComments = false;
}

//и потом к примеру в стилях у меня 
....
.pipe(gulpIf(env !== 'dev', cleanCSS({compatibility: 'ie8'})))

// в js
...
.pipe(gulpIf(env !== 'dev', uglify()))
....
просто меняю env на === и собираю стили и скрипты для продакшн (оптимизированы)

и т.д по сути заменяя лишь значения с !== на === собираются 2 сборки: или builds/development /или builds/production/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
abyrkov
@abyrkov
JavaScripter
Сделать отдельную параметризированную функцию, к примеру.
Не стоит забывать, что gulpfile - это полноценный файл JS, и творить с ним можно приблизительно то же.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы