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

使用gulp将文件复制到同一目录中的新名称,gulp,glob,Gulp,Glob,我正在尝试使用gulp将一个文件复制到具有不同名称的同一目录中-具有不同名称的文件已经存在。在Unix中,这只是gulp中的cp./data/file.json.bak./data/file.json。在Windows系统中,这似乎要复杂得多 我试过: gulp.task'restore-json',函数{ 返回gulp.src'./data/file.json.bak' .pipegulp.dest./data/file.json',{overwrite:true}; }; 如果文件存在,我会

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

我试过:

gulp.task'restore-json',函数{ 返回gulp.src'./data/file.json.bak' .pipegulp.dest./data/file.json',{overwrite:true}; };

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


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

传递给gulp.dest的参数不是文件名。它是要将流中的所有文件写入的目录的名称。看

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


传递给gulp.dest的参数不是文件名。它是要将流中的所有文件写入的目录的名称。看

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


如果我重命名文件,我只是重命名流中的文件,而不是我要保留的原始文件吗?是的,文件仅在流中重命名。这意味着您可以在gulp.dest将文件写入磁盘时有效地创建文件的副本。如果我重命名文件,是否只是重命名流中的文件,而不是我要保留的原始文件?是的,文件仅在流中重命名。这意味着您可以在gulp.dest将文件写入磁盘时有效地创建该文件的副本。
var rename = require('gulp-rename');

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