gulp-imagemin - использовать источник как динамическое назначение

Я пытался осмотреться, но не могу найти ничего, что могу понять. Я довольно новичок, когда дело доходит до глотка и прочего, поскольку я в основном использую его для автоматизации пары задач для разработчика переднего плана, поэтому мне удалось заставить его работать с несколькими нужными мне вещами (sass, watch, browser) -sync), но теперь я хотел добавить imagemin к моему gulpfile.js, и тут возникает проблема.

Я смог заставить его работать со стандартным синтаксисом

            // Optimise Images
            gulp.task('imagemin', function() {
               var imgSrc = 'wp-content/themes/solid-theme-child/img/*.+(png|jpg|gif)',
               imgDst = 'wp-content/themes/solid-theme-child/img/opt';

               gulp.src(imgSrc)
               .pipe(changed(imgDst))
               .pipe(imagemin())
               .pipe(gulp.dest(imgDst));
            });

Я в основном работаю с WordPress и хотел бы просмотреть всю папку / wp-content / uploads и ее подпапки, но проблема в том, что я не могу определить конкретную выходную папку, так как / uploads / содержит много папок, отсортированных по месяцам, и новый добавляется каждый месяц. Я хотел бы отсканировать все это и оптимизировать изображения внутри, а затем заменить исходные изображения их оптимизированной версией, не создавая копии в какой-либо определенной предопределенной папке.

Извините за глупый вопрос, если бы я мог сам разобраться, я бы не спросил, но я действительно не знаю, как это сделать, надеюсь, вы понимаете.

Большое спасибо!

1 ответ

То, что вы хотите использовать, это шаблон glob (**). Позволяет выбирать файлы в каталогах на несколько уровней вниз. Он часто используется вместе с Gulp.

Вы можете использовать одно и то же имя папки в качестве ввода для обоих gulp.src() а также gulp.dest(), Это перезапишет исходные изображения.

Вот пример, который оптимизирует все изображения PNG в wp-content/uploads папка. Он перейдет во все подпапки, выберет изображения png, оптимизирует их и запишет обратно в те же папки, в которых они находились.

const gulp = require('gulp');
const imagemin = require('gulp-imagemin');
const imageminPngquant = require('imagemin-pngquant');

const imagesDir = 'wp-content/uploads';

gulp.task('compressimages', () => {
  gulp.src(`${imagesDir}/**/*.png`)
    .pipe(imagemin([imageminPngquant({ quality: '30' })]))
    .pipe(gulp.dest(imagesDir));
});

gulp.task('default', ['compressimages']);
Другие вопросы по тегам