Как в Gulp сделать отдельную задачу для сборки на продакшн?
Дублировать ничего не нужно, вот пример моего 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/
Сделать отдельную параметризированную функцию, к примеру.
Не стоит забывать, что gulpfile - это полноценный файл JS, и творить с ним можно приблизительно то же.