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