Я на своих проектах делаю так:
в корень я ложу свой дефолтный .gulpfile
require('@babel/register');
require('require-dir')('./gulp/tasks', { recurse: true });
создаю папку /gulp/tasks в которую я со своего архива наработок копирую нужные таски, 80% из них везде одинаковые, потому и package.json и содержимое папки тасков почти одинаковые. Для путей, и прочих переменных что отличаются я создаю отдельный уникальный файл.json, в котором уже есть переменные которые нужно только заполнить.
По итогу, полная настройка сборщика, вместе с бабелем и всеми прикольными фишечками у меня занимает порядка 10-15 минут на проект. Это время окупается в пару часов работы за счёт LiveReload, auto-deploy, привычки работать со своим стеком и т.д.
Потому, я бы советовал один раз хорошенько подготовить свой сборщик и добавлять его во все свои проекты. Конечно - это того стоит, вы потом сами это поймёте.