Я не эксперт по галпу, но судя по задаче и ошибке из консоли, твой минификатор JS кода (gulp-uglify) пытается минифицировать HTML код в index.html. Он начинает парсить index.html, (именно его твоя задача берет как ресурс для обработки в строке return gulp.src('./app/index.html')), встречает первым символом знак <, удивляется и выдает ошибку — для обработчика JS кода это синтаксическая ошибка при парсинге. Нужно корректировать задачу в галпе. Лучше разделить обработку html, js, css, картинок и т.д. в разные задачи. А потом запускать их требуемыми группами для сборки проекта.
Не знаю как именно работают gulpif и useref, но очень похоже на то что задача заточена под обрабаботку и HTML, и JS, и CSS файлов. И уже в зависимости от файла вызывать обработку — минификацию JS и CSS соответственно.
Больше всего смущает это: .pipe(gulpif('*.js', uglify())) .pipe(uglify().on('error', function(e){ console.log(e); }))
Подозреваю, что после проверки (.pipe(gulpif('*.js', uglify()))), является ли выбранный файл (в твоем случае index.html) JS файлом, ты все равно следующей строкой принудительно запускаешь минификацию через gulp-uglify (даже если это не JS файл).