Подтвердить что ты не робот

CSS уменьшает и переименовывает с помощью gulp

У меня есть переменная типа

var files = {
    'foo.css': 'foo.min.css',
    'bar.css': 'bar.min.css',
};

Что я хочу сделать gulp для меня, это minify файлы, а затем rename для меня.

Но задачи в настоящее время записываются как (для одного файла)

gulp.task('minify', function () {
    gulp.src('foo.css')
        .pipe(minify({keepBreaks: true}))
        .pipe(concat('foo.min.css'))
        .pipe(gulp.dest('./'))
});

Как переписать, чтобы он работал с моей переменной files, определенной выше?

4b9b3361

Ответ 1

Вы должны иметь возможность выбирать любые файлы, необходимые для вашего src, с помощью Glob, а не определять их в объекте, что должно упростить вашу задачу. Кроме того, если вы хотите, чтобы css файлы были минитизированы в отдельные файлы, вам не нужно их конкатенировать.

var gulp = require('gulp');
var minify = require('gulp-minify-css');
var rename = require('gulp-rename');

gulp.task('minify', function () {
    gulp.src('./*.css')
        .pipe(minify({keepBreaks: true}))
        .pipe(rename({
            suffix: '.min'
        }))
        .pipe(gulp.dest('./'))
    ;
});

gulp.task('default', ['minify'], function() {

});

Ответ 2

Я попробовал более ранние ответы, но у меня получился бесконечный цикл, потому что я не игнорировал файлы, которые уже были оценены.

Сначала используйте этот код, похожий на другие ответы:

//setup minify task
var cssMinifyLocation = ['css/build/*.css', '!css/build/*.min.css'];
gulp.task('minify-css', function() {
  return gulp.src(cssMinifyLocation)
    .pipe(minifyCss({compatibility: 'ie8', keepBreaks:false}))
    .pipe(rename({ suffix: '.min' }))
    .pipe(gulp.dest(stylesDestination));
});

Обратите внимание на '!css/build/*.min.css' в src (то есть var cssMinifyLocation)

//Watch task
gulp.task('default',function() {
    gulp.watch(stylesLocation,['styles']);
    gulp.watch(cssMinifyLocation,['minify-css']);
});

Вы должны игнорировать миниатюрные файлы как в часах, так и в задаче.

Ответ 3

Это то, что я сделал

var injectOptions = {
     addSuffix: '?v=' + new Date().getTime()
};

Тогда

return gulp.src('*.html')
    .pipe(wiredep(options))
    .pipe(inject(injectSrc, injectOptions))
    .pipe(gulp.dest(''));

Конечный результат: добавлена ​​уникальная отметка времени

Пример в index.html

   <script src="/public/js/app.js?v=1490309718489"></script>