使用 gulp 将文件复制到同一目录中的新名称

Copy a file to new name in same directory using gulp

我正在尝试使用 gulp 将一个文件复制到具有不同名称的同一目录 - 具有不同名称的文件已经存在。在 Unix 中,这只是 cp ./data/file.json.bak ./data/file.json 在 gulp 中似乎更棘手(我在 Windows 系统上)。

我试过:

gulp.task('restore-json',function(){ return gulp.src('./data/file.json.bak') .pipe(gulp.dest('./data/file.json',{overwrite:true})); });

如果文件存在,我会收到 EEXIST 错误。如果没有,它会创建 file.json 作为目录。

我假设这个问题是因为 gulp 使用 globbing 并且有效地将 srcdest 视为路径。你知道我能做到这一点的最有效方法吗?我想一个解决方法是将文件复制到 tmp 目录,然后使用 glob 通配符重命名和复制,但这是正确的方法吗?

您传递给 gulp.dest() 的参数是不是文件名。它是您希望将流中的所有文件写入的 目录 的名称。见 docs.

如果要重命名文件,请使用 gulp-rename 插件:

var rename = require('gulp-rename');

gulp.task('restore-json',function(){
  return gulp.src('./data/file.json.bak')
    .pipe(rename({extname:''}))
    .pipe(gulp.dest('./data/'));
});