我可以在gulp中使用一个任务重命名或复制两个文件

时间:2016-04-07 14:10:04

标签: gulp

这就是我现在正在做的事情。它有效,但如果我想重命名更多的苍蝇,那么我最终会完成很多任务:

gulp.task('rename_bundle_css', ['make_css_bundle'], function () {
    return gulp.src('content/bundles/css.min.css')
        .pipe(rename('css-' + md5File('content/bundles/css.min.css') + '.min.css'))
        .pipe(gulp.dest('content/bundles/'));
});

gulp.task('rename_bundle_css_zip', ['rename_bundle_css'], function () {
    return gulp.src('content/bundles/css.min.css.gz')
        .pipe(rename('css-' + md5File('content/bundles/css.min.css') + '.min.css.gz'))
        .pipe(gulp.dest('content/bundles/'));
});

有没有办法可以将这两者组合成一个或某种方式我在一个任务中重命名(或复制)多个文件?

1 个答案:

答案 0 :(得分:1)

您可以将函数传递给gulp-rename,该函数会为流中的每个文件接收具有以下属性的对象:

  • dirname:文件所在目录的路径
  • basename:没有文件扩展名的文件名
  • extname:文件扩展名

更改其中任何一个都会重命名该文件。

以这种方式重写的示例可能如下所示:

gulp.task('rename_bundle_css', ['make_css_bundle'], function () {
  return gulp.src(['content/bundles/css.min.css',
                   'content/bundles/css.min.css.gz'])
    .pipe(rename(function(file) {
       var original = file.basename + file.extname.replace(/\.gz$/, '');
       var hash = md5File('content/bundles/' + original);
       file.basename = file.basename.replace(/^css/, 'css-' + hash);
    }))
    .pipe(gulp.dest('content/bundles/'));
});