2016-04-04 63 views
0

下面的代碼沒有正確合併rev-manifest.json文件。 我循環了幾個JS任務,只有一個被合併,儘管散列文件正在被創建和正確存儲。gulpfile.js:rev.manifest()不合並幾個JS任務

我已經嘗試了很多東西,我檢查了gulp-rev和一些用戶接縫有類似的問題。其中一些正在創建幾個清單文件,並在最後進行實際合併。我想放棄這個解決方案,因爲它很慢很醜。

如果我評論concat(...)行清單文件註冊所有的JS任務。

這是一個錯誤還是我在這裏錯過了什麼?

一飲而盡3.9.1 一飲而盡,CONCAT 2.6.0 一飲而盡-REV 7.0.0

var gulp = require('gulp'); 
 
var less = require('gulp-less'); 
 
var minifycss = require('gulp-minify-css'); 
 
var jshint = require('gulp-jshint'); 
 
var uglify = require('gulp-uglify'); 
 
var concat = require('gulp-concat'); 
 
var rev = require('gulp-rev'); 
 

 
var jsFiles = { 
 
\t task1: [ 
 
\t \t './path/file1.js' 
 
\t ], 
 
\t task2: [ 
 
\t \t './path/file2.js', 
 
    \t './path/file2.js' 
 
\t ] 
 
}; 
 

 

 
function jsTask(key) { 
 
\t gulp.task(key, function() { 
 
\t \t gulp.src(jsFiles[key]) 
 
\t \t \t .pipe(jshint()) 
 
\t \t \t .pipe(jshint.reporter('default')) 
 
\t \t \t .pipe(uglify()) 
 
\t \t \t // IT WORKS WHEN I COMMENT THIS LINE 
 
\t \t \t .pipe(concat(key + '.min.js')) 
 
\t \t \t .pipe(rev()) 
 
\t \t \t .pipe(gulp.dest('./public/js')) 
 
\t \t \t .pipe(rev.manifest({merge:true })) 
 
     \t .pipe(gulp.dest('.')); 
 
\t }); 
 
} 
 

 

 
gulp.task('less', function() { 
 
\t return gulp.src(['./path/less/*.less']) 
 
\t \t .pipe(less({errLogToConsole: true})) 
 
\t \t .pipe(minifycss()) 
 
\t \t .pipe(rev()) 
 
\t \t .pipe(gulp.dest('./path/public/css')) 
 
\t \t .pipe(rev.manifest({merge:true })) 
 
     .pipe(gulp.dest('.')); 
 
}); 
 

 

 
for (var key in jsFiles) { 
 
\t jsTask(key); 
 
} 
 

 

 
var defaultTasks = ['less']; 
 
for (var key in jsFiles) { 
 
\t defaultTasks.push(key); 
 
} 
 

 
gulp.task('default', defaultTasks);

回答

0

我會建議使用gulp-useref代替一飲而盡,CONCAT的。

考慮到你的設置,我認爲key引用了一個glob路徑,或者至少我希望如此。否則,您嘗試連接單個文件,或者沒有任何文件可能導致連接插件崩潰。強調五月。

另外,由於您使用的是gulp-rev,我建議您使用gulp-rev-replace,它會自動更新您對索引文件的索引。

編輯


有時rev.manifest表現在,我會形容爲越野車的方式。只是爲了消除所有可能性,刪除清單的合併選項並運行concat。或者運行concat並完全刪除清單。