Ответы пользователя по тегу Gulp.js
  • Как создать дополнительную папку с html файлами, что бы она включалась в сборку?

    IIIu6ko
    @IIIu6ko
    Нужно подредактировать gulpfile, а точнее добавить путь в таск htmlInclude
    const htmlInclude = () => {
      return src([`${srcFolder}/*.html`, `${srcFolder}/project/*.html`])
        .pipe(fileInclude({
          prefix: '@',
          basepath: '@file'
        }))
        .pipe(typograf({
          locale: ['ru', 'en-US']
        }))
        .pipe(dest(buildFolder))
        .pipe(browserSync.stream());
    }
    Ответ написан
  • Gulp.lastRun и gulp-nunjucks, варианты?

    IIIu6ko
    @IIIu6ko Автор вопроса
    Нашёл пакет gulp-nunjucks-inheritance

    Таск теперь выглядит вот так
    function html() {
      return src('src/**/*.{html,njk}', { base: 'src', since: lastRun('html') })
    
        // Nunjucks
        .pipe(nunjucksInheritance({ base: 'src' })) // Ищем изменения в зависимостях
        .pipe(nunjucks({ path: 'src' })) // Компилируем в HTML
    
        // Добавляет индентацию для заинклюженных блоков.
        .pipe(prettyHtml({ indent_size: 2 }))
    
        // HTML-валидатор.
        .pipe(htmlhint('.htmlhintrc'))
        .pipe(htmlhint.reporter())
    
        // Манифест.
        // Если флаг --dist без --norev.
        .pipe(gulpif(dist, gulpif(!norev, revReplace({
          manifest: src('manifest/manifest.json', { allowEmpty: true }),
        }))))
    
        // Выгрузка.
        .pipe(dest(buildHtml))
    
        // browserSync.
        .pipe(gulpif(!dist, browserSync.stream())); // Если нет флага --dist.
    }


    Обязательно в src указывайте путь до всех .njk файлов, иначе пакет отказывается работать.
    Ответ написан
    Комментировать
  • Почему не конвертируются webp в gulp?

    IIIu6ko
    @IIIu6ko
    Добрый день. недавно делал таск для webp:
    gulp.task("imgsWebp", function() {
      return gulp.src("src/blocks/**/*.{jpg,jpeg,png,gif,ico}")
    
        // Конвертирует изображение в webp и сжимает его.
        .pipe(webp({
          quality: 100
        }))
    
        // Выгрузка.
        .pipe(gulp.dest(buildImgs))
    
        // Browsersync.
        .pipe(gulpif(!dist, browserSync.stream())); // Если нет флага --dist.
    });

    webp - gulp-webp

    Соответственно в итоге пара изображений с одинаковыми названиями, но с разными форматами
    5e19b2dc1d79e572945243.png
    Ответ написан
    1 комментарий
  • Как удалить только то, что было удалено?

    IIIu6ko
    @IIIu6ko Автор вопроса
    Решил проблему с помощью данного рецепта
    https://github.com/gulpjs/gulp/blob/4.0/docs/recip...

    Спасибо Сергей (за совет глянуть Илью) и Илья Кантор (за скринкаст, а именно вот за этот момент https://youtu.be/jocvHauHcA4?t=6m33s )

    Собственно вот код:
    // gulp@4.0.0-alpha.2
    
    var gulp = require('gulp');
    var del = require('del');
    var path = require('path');
    var flatten = require('gulp-flatten'); 
    
    gulp.task('imgs', function() {
      return gulp.src('src/blocks/**/*.{jpg,jpeg,png,gif,svg}')
        .pipe(flatten()) // Удаляет относительный путь до файла.
        .pipe(gulp.dest('public/imgs'))
        .pipe(browserSync.stream());
    });
    
    gulp.task('watch', function() {
      gulp.watch('src/blocks/**/*.{jpg,jpeg,png,gif,svg}', gulp.series('imgs')).on('unlink', function (filepath) {
        var filePathFromSrc = path.relative(path.resolve('src/blocks/'), filepath);
        // Concatenating the 'build' absolute path used by gulp.dest in the scripts task
        var destFilePath = path.resolve('public/imgs', filePathFromSrc);
        del.sync(destFilePath);
      });
    });
    Ответ написан
    Комментировать