我正在尝试使用 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并有效地将src和dest视为路径。你知道我可以做到这一点的最有效的方法吗?我想解决方法是将文件复制到 tmp 目录,然后使用 glob 通配符重命名和复制,但这是正确的方法吗?
您传递给的参数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)