2014-09-10 67 views
23

我已經喜歡CSS縮小和重命名一飲而盡

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

一個變量我想吞氣爲我做的是minify文件,然後rename我。

但任務目前正在寫爲(一檔)

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

如何重寫所以它與我的變量files上面定義的工作嗎?

+0

你的意思是你正在尋找迭代親你的'文件'對象的屬性? (PS:是否有一個原因,它是一個對象?我可能期望這是一個數組,基於它的名字..?) – ne1410s 2014-09-10 11:54:13

+0

只是一個供參考'gulp-minify-css'已被[棄用](https:/ /www.npmjs.com/package/gulp-minify-css)支持[gulp-clean-css](https://github.com/scniro/gulp-clean-css) – scniro 2016-03-02 00:29:38

回答

44

您應該可以使用Glob選擇您的src所需的任何文件,而不是在對象中定義它們,這應該簡化您的任務。另外,如果您希望將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() { 

}); 
+1

當我這樣做時,它會創建每次保存時帶.min.min.css的新文件。爲什麼這樣做? – jaminroe 2015-12-18 20:51:04

+4

在src上,您始終可以使用「!」指定要忽略的文件。 示例(您希望排除css文件夾和子文件夾中的所有* .min.css文件: 'gulp.src(['css/**/*。css','!css/**/*。 min.css'])' – intellion 2016-02-02 18:57:11

10

我試過早期的答案,但我得到了一個永無止境的循環,因爲我沒有忽略已經縮小的文件。

第一次使用此代碼,類似於其他答案:

//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']); 
}); 

你必須忽略這兩個手錶縮小的文件和任務。

2

這是我做了什麼

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>