我尝试使用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
并且有效地将src
和dest
视为路径。你知道我能做到这一点最有效的方法吗?我想一个解决方法是将文件复制到tmp目录,然后使用glob通配符重命名和复制,但这是正确的方法吗?
答案 0 :(得分:4)
您传递给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/'));
});