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

dew*_*ewd 1 glob gulp

我正在尝试使用 gulp 将一个文件复制到具有不同名称的同一目录 - 具有不同名称的文件已经存在。在 Unix 中这只是简单的cp ./data/file.json.bak ./data/file.jsongulp 似乎更棘手(我在 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 通配符重命名和复制,但这是正确的方法吗?

Sve*_*ung 5

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

如果您想重命名文件,请使用该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/'));
});
Run Code Online (Sandbox Code Playgroud)