2015-11-13 48 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