Gulp 5, битые изображения при копировании и ошибки шрифтов. Как исправить?
При копировании изображений в Gulp 5 на выходе они получаются битыми. Рассмотрим простое решение, без необходимости откатываться на 4 версию.
Проблема
Когда мы копируем изображения с исходников (папка src
), в папку проекта ( build
), то на выходе получаются битые изображения.
Например так:
export const images = () => { return gulp.src(./src/images/**/*.*') //ваши настройки .pipe(gulp.dest(./build/images/)) }
Тоесть обычное копирование 🙂
При это мы получаем непонятный бинарный файл с аналогичным названием, но уже далеко не картинку 🙁
Эта проблема с Gulp 5.0
если понизить до 4 будет все работать.
Решение
В Gulp 5.0
нужно применить опцию {encoding: false}
непосредственно к вызову функции src()
.
Это сообщает Gulp не конвертировать данные в текстовую кодировку.
Например :
export const images = () => { return gulp.src(./src/images/**/*.*',{encoding: false}) //ваши настройки .pipe(gulp.dest(./build/images/)) }
На 5.0 проблема в том что по умолчанию .dest
в gulp
обрабатывает файлы как текстовые и в кодировке utf-8
поэтому в тасках на конвертирование шрифтов, оптимизацию картинок нужно писать src('./src/fonts/**/*.ttf',{encoding:false})
чтобы получаемые файлы были в буфере в двоичном виде.