gulp-rename создает ненужные каталоги

Я использую gulp для изменения размера и переименования некоторых изображений:

var gulp = require('gulp');
var imageResize = require('gulp-image-resize');
var changed = require('gulp-changed');
var rename = require('gulp-rename');

var resizeImages = function resize(options) {
  gulp
    .src('original-images/**')
    .pipe(changed('./'))
    .pipe(imageResize({ width: options.width }))
    .pipe(rename((path) => { path.basename += options.fileSuffix; }))
    .pipe(gulp.dest('public/assets/img/'));
};


gulp.task('resize-images', () => {
  const desktopImageResizeOptions = {
    width: 356,
    fileSuffix: '-desktop',
  };
  const tabletImageResizeOptions = {
    width: 291,
    fileSuffix: '-tablet',
  };
  const phoneImageResizeOptions = {
    width: 721,
    fileSuffix: '-phone',
  };
  resizeImages(desktopImageResizeOptions);
  resizeImages(tabletImageResizeOptions);
  resizeImages(phoneImageResizeOptions);
});

Это работает — переименованные изображения с измененным размером помещаются в правильное место с добавлением суффикса к имени файла.

Однако он также создает каталоги с именами -desktop, -phone и -tablet. Как я могу предотвратить это?


person Edward    schedule 02.12.2015    source источник


Ответы (2)


Я решил это, указав окончания файлов и, следовательно, не передавая каталоги. Таким образом, src в строке 8 стал

.src('original-images/**/*.{jpg,png}')
person Edward    schedule 02.12.2015
comment
была такая же глупая проблема, спасибо за публикацию собственного ответа :) - person TheFullResolution; 23.01.2016

Вы также можете иметь дело с более сложными случаями. Если функция, переданная функции rename, не меняет путь к файлу, он будет опущен. В следующем примере файл не будет переименован, если он не имеет extname

.pipe(rename(function (path) {
    if (path.extname !== "") {
        path.basename += "-" + options.width;
    }            
}))
person emartini    schedule 09.02.2016