2015-11-13 90 views
0

我的gulp-rev-all任務出現問題。每次我更改代碼時,它都會生成一個新的修訂文件,但將舊文件保留在那裏。Gulp-rev-all保留舊版本文件

這是我的任務,一飲而盡:

var gulp   = require('gulp'); 
var RevAll  = require('gulp-rev-all'); 

gulp.task('js', function() { 

    var revAll = new RevAll(); 

    return gulp.src(opt.Src + 'scripts.js') 
     // Add a hash to the file 
     .pipe(revAll.revision()) 
     // Save the hashed css file 
     .pipe(gulp.dest(path.js)) 
     // Write the manifest file 
     .pipe(revAll.manifestFile()) 
     .pipe(gulp.dest(path.js + 'rev')); 
}); 

所以,這就像一個魅力。 它會給我一個帶有rev的文件(如:scripts.0ad8ecf1.js)和manifest.json文件。 挑戰是,無論何時我更改我的代碼,它都會生成一個新的scripts.js文件,其中包含不同的哈希值,而不會覆蓋或刪除舊的哈希值。所以,我的文件夾現在看起來像這樣:

scripts.0ad8ecf1.js 
scripts.7e3fa506.js 
scripts.056ddda0.js 

我似乎無法替換舊文件的新的。 任何人都可以幫助我或指出我在正確的方向來完成這項任務嗎?

回答

1

您需要使用其他插件刪除文件,因爲gulp-rev-all不會爲您執行此操作。

例如,你可以使用「刪除」包(https://www.npmjs.com/package/del

,然後創建一個「刪除任務」是這樣的:

var del = require('del'); 

/** 
* Deletes all files inside the /foo/scripts/ folder 
*/ 
gulp.task('purge:foo', function() { 

    return del.sync(['foo/scripts/**'], function (err, deletedFiles) { 
     if (err) { 
      console.log(err); 
     } 
     if (deletedFiles) { 
      console.log('Elements deleted:', deletedFiles.join(', ')); 
     } 
    }); 
}); 
+0

謝謝你的評論。但我有個問題。 您的意思是說其他任務將此任務作爲依賴關係嗎?例如,如果我有'css'和'js'任務(兩者都是相互分離的)。 或者你如何看待這個任務與他人合作? –

+0

取決於您的設置。您可以簡單地將它們作爲依賴項添加到這些任務中,或者查看「runsequence」插件。 我個人有一個「構建」任務,然後首先運行清除任務,然後運行css,js等。 另一種選擇是,您爲每個css和js任務創建一個特殊任務,只爲它們清除文件。 例如purge:css,purge:js – Fkscorpion